2015-11-05 59 views
1

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

+0

你使用navigationcontroller?或者如何从X切换到Y? –

+0

@AndreSlotta是的我正在使用NavigationController – mjr

+0

,你如何从X到Y?你是否在故事板中创建了一个segue?或者你是否以编程方式做到这一点? –

回答

1

一种可能性:删除故事板的塞格斯和实施这样的事情...

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

这是因为,当你从X到Y时,Y实例被创建,并且(我猜)被推到stack UINavigationController。当你按下返回按钮时,Y实例被取消分配,X再次出现。 X实例与首次创建的X实例相同。当你再次回到Y时,它将从头开始重新创建,作为一个新实例。

可能的解决方案:

  • 保持该字段的值在“根”视图控制器作为自定义对象,或字典并且通过它周围呈现VCS在prepareForSegue即。我的意思是控制器呈现第一页的形式或只是第一页vc - 取决于您的需求
  • 将它们存储在用户默认值中在每个vc中访问
  • 将它们保存在您可以访问的某个单例对象中每个控制器
+0

当然,这是有道理的。现在我必须找到一种方法来保持Y – mjr

+0

的原始实例是否只需要X和Y?还是有更多的控制器要推? –

+0

@mjr - 不要保留整个Y视图控制器 - 你只需要textField的文本,这是简单的字符串 – Kubba