为什么点击后退按钮后我在导航控制器中的视图会被清除?

Why does my view in a Navigation Controller clear after hitting the back button?

我在导航控制器中有两个 UITableViewControllers,其中包含用于表单的静态单元格。我有一个从第一个视图的单元格到第二个视图的 show segue,但是当我点击第二个视图上的后退按钮时,第二个视图中文本字段和选择器中的所有数据都被删除。为什么会这样,我该如何解决?

每次执行从第一个视图控制器到第二个视图控制器的转换时,都会创建第二个视图控制器。因此,每次新建时都会重新创建第二个视图控制器的初始状态。请参阅此答案以更好地理解该过程(这是问题 3 的答案):

iOS Segue - When are the viewControllers Instantiated

您有多种选择来解决这个问题。例如:

  • 将数据存储在磁盘上的第二个视图控制器中(例如使用 NSUserDefaults)并在每次创建视图控制器时重新创建
  • 将第二个视图控制器的实例存储在第一个视图控制器中,不要继续访问它,而是调用 self.navigationController?.pushViewController 打开第二个视图控制器
  • 等...