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

时间:2015-11-05 19:23:54

标签: ios swift uiviewcontroller uitextfield

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

2 个答案:

答案 0 :(得分:1)

这是因为当你从X转到Y时,会创建Y实例并且(我猜)推送到堆叠的UINavigationController。当您按下后退按钮时,Y实例将被取消分配并再次显示X. X实例与首次创建的X实例相同。再次转到Y时,它会从头开始再次创建,作为一个新实例。

可能的解决方案:

  • 将字段值保存在“根”视图控制器中作为自定义对象或字典,并将其传递给所有vcs,即prepareForSegue。从根本上来说,我指的是显示表单第一页或第一页vc的控制器 - 取决于您的需求
  • 将它们存储在用户默认值中,并在每个vc
  • 中进行访问
  • 将它们保存在您可以从每个控制器访问的单个对象中

答案 1 :(得分:1)

一种可能性:在故事板中移除你的segue并实现类似的东西......

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)
  }
}