在视图之间保留 UITextField 中的文本

Keep text in UITextField between views

我有两个ViewControllers,X和Y,都包含UITextFields。从 X 开始,我在一个字段中输入一些文本,然后切换到 Y 并在一个字段中输入一些文本。回到 X,我输入的文字还在,而再次回到 Y 显示文字已经消失。在所有视图之间切换时如何在 TextFields 中保留文本?

这是因为当您从 X 转到 Y 时,会创建 Y 实例并(我猜)将其推送到 UINavigationController 堆栈。当您按下后退按钮时,Y 实例将被释放并再次呈现 X。 X 实例与最初创建的 X 实例相同。当您再次转到 Y 时,它会作为一个新实例从头开始重新创建。

可能的解决方案:

  • 将字段值保留在 "root" 视图控制器中作为自定义对象或字典,并将其传递到 vc 中,即在 prepareForSegue 中。 root 是指显示表单第一页或仅显示第一页的控制器 vc - 取决于您的需要
  • 将它们存储在用户默认值中,每个 vc
  • 将它们保存在某个您可以从每个控制器访问的单例对象中

一种可能性:删除情节提要中的 segues 并实现类似这样的东西...

class FirstViewController: UIViewController {
  lazy var secondVC: SecondViewController = {
    let vc = self.storyboard?.instantiateViewControllerWithIdentifier("SecondVC") as! SecondViewController
    return vc
  }()

  @IBAction func buttonTapped(sender: UIButton) {
    navigationController?.pushViewController(secondVC, animated: true)
  }
}