坚持不懈

所以我想通过Swift中的segues来理解持久性。 我有三个文本字段,我们把它们的名字,date和位置都放在一个视图中。 我创build了一个两视图窗体,所以在我收集这些数据点(名称,date,位置)之后,我使用一个segue通过添加到第一个视图的button转换到下一个视图。

然后,我在下一个视图中添加了一个返回button,以返回到原始视图(w /名称,date,位置字段)。 我不明白的是这些领域的价值观是如何坚持的。 我没有添加任何代表或与第二个视图控制器添加任何连接。 但是,当我从第二个返回到第一个视图控制器时,值(名称,date,位置)将保留在其各自的文本字段中。 但是,如果我添加一些东西到第二个视图控制器文本字段,返回到第一个,然后向前移回到第二个,那些值在第二个不持久。

class pageOne: UIViewController { @IBOutlet weak var name: UITextField! @IBOutlet weak var location: UITextField! @IBOutlet weak var date: UITextField! override func viewDidLoad() {} @IBAction func nextScreen(sender: UIButton) { if(eventLocation.text != nil){ self.performSegueWithIdentifier("firstSegue", sender: self) } else { let ac = UIAlertController(title: "Invalid Location", message:"Please enter a new location.", preferredStyle: .Alert) ac.addAction(UIAlertAction(title: "Ok", style: .Default, handler: nil)) presentViewController(ac, animated: true, completion: nil) } } } class pageTwo: UIViewController { @IBOutlet weak var firstValue: UITextField! @IBOutlet weak var secondValue: UITextField! override func viewDidLoad() { super.viewDidLoad() } @IBAction func backToStart(sender: UIButton) { self.performSegueWithIdentifier("firstSegueReturn", sender: self) } } 

赛格是否保持了以前的观点? 这就是为什么当我通过“firstSegueReturn”返回到第一个视图时,我看到了我input的值? 但是为什么当我从第一个视图文本字段返回的时候,第二个视图文本字段中的数据不会被保存呢?

所以iOS维护一个导航堆栈。 当你继续看第二个视图时,第一个视图仍然在导航栈上,所以它仍然在内存中。 当你从第二个视图返回到第一个视图时,第二个视图将从内存栈中popup,并且不再为其分配内存。 这就是为什么当你返回到第二个视图控制器时,你的值不再存在。

希望这能说明问题。