我有一个用于添加新记录或编辑现有记录的视图。在viewWillAppear
我加载了我的记录,或者只是将文本字段留空。
我有一个选择屏幕,使用添加/编辑屏幕中的pushViewController
显示。一旦我选择了值并返回到我之前的屏幕,就会调用viewWillAppear
并重新加载记录,并且我将丢失任何更改的文本字段值。
我应该如何保留已更改且当前丢失的值?
我想你要问的一个问题是,为什么不在viewDidLoad
中加载你的记录,屏幕可以被大量使用,并且每次显示屏幕时都不会调用它。 / p>
答案 0 :(得分:0)
不要依赖您的观点来保存状态。您应该将对视图中显示的数据的更改保存到某种形式的模型对象中。这样,您可以在任何时候重新加载或重新创建视图,并通过使用特定模型中的值重新填充它来将其返回到相同的状态。
此模式非常重要,因为您希望视图控制器能够根据需要卸载和重新加载视图以减少内存使用。 UIViewController会自动执行此操作以响应内存警告,因此如果您认为视图在不可见时仍会保留旧数据,那么您将丢失该信息。
在您的情况下,当用户更改文本字段中的值时,您应该更新此记录。然后,您可以将记录中的值重新加载到-viewWillAppear:
方法的文本字段中。
不幸的是,除非您显示正在处理的代码,否则我不知道如何更具体。