【发布时间】:2020-11-25 10:23:54
【问题描述】:
我有一个带有一些文本字段、切换和选择器的表单。一切正常,除了当我在文本字段上输入内容并单击取消按钮并重新打开表单时,输入仍然存在。就是不知道为什么。
现在,我正在开发的应用程序非常庞大。因此,无法共享所有内容,但我的 btnCancelClicked 方法如下所示:
- (IBAction)btnCancelClicked:(id)sender {
if(onCompletion) {
onCompletion(self.myView, YES);
}
}
实现取消按钮的逻辑是什么?关闭视图而不保存用户输入的分步过程是什么?我想了解这背后的问题可能是什么。感谢您的帮助。
编辑:[self.myView setNeedsDisplay]; 或 [self.myView setNeedsLayout]; 没有帮助。
Edit2: TextViews 也可以正常工作,这意味着当我键入内容然后单击取消并重新打开时,视图处于其初始状态。唯一的问题是文本字段。我应该为他们做些不同的事情吗?
【问题讨论】:
-
这可能是故意的 - 查看 VC 或文本字段是否在情节提要中具有 恢复 id。 iOS 允许您以多种方式进行状态恢复,我猜这是使用其中一种方式。 developer.apple.com/documentation/uikit/uiviewcontroller/…
-
@skaak 感谢您的建议,但在检查器中恢复 id 字段看起来是空的。我现在会检查链接。
-
@skaak 我认为这与您发布的链接中提到的内容无关。
-
好的——如果你打算保留文本的话。否则,如答案中所述,视图仍保留在内存中。 setNeedsDisplay / Layout 与它无关(我侦察)。也许显示视图是如何呈现的以及显示
onCompletion块。我认为当您呈现视图时,有一些逻辑与取消的onCompletion互操作,以便视图以某种方式保留在内存中 - 可能是故意在取消后返回? - 并再次呈现。
标签: objective-c forms uitextfield cancel-button