Итак, я пытаюсь понять упорство через segues в Свифте. У меня есть три текстовых поля, давайте назовем их имя, дату и местоположение в одном представлении. Я создаю две формы представления, поэтому после того, как я собираю эти точки данных (имя, дата, местоположение), я использую segue для перехода к следующему представлению с помощью кнопки, добавленной к первому виду.Стойкость через Segues
Затем я добавил кнопку возврата на следующем изображении, чтобы вернуться к исходному виду (с указанием полей имени, даты, местоположения). Я не понимаю, как сохраняются эти значения в полях. Я не добавил делегатов или добавил какое-либо соединение со вторым контроллером представления. Однако, когда я возвращаюсь к первому контроллеру представления со второго, значения (имя, дата, местоположение) сохраняются в соответствующих текстовых полях. Но если я добавлю что-то во второе текстовое поле контроллеров представления, вернитесь к первому, а затем перейдите назад ко второму, эти значения во втором не будут сохраняться.
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)
}
}
Является ли segue сохранением предыдущего состояния зрения? Именно поэтому я вижу значения, которые я ввел в первом представлении, когда возвращаюсь к нему через «firstSegueReturn»? Но тогда почему не сохраняются данные во втором текстовом поле просмотра, когда я возвращаюсь к нему с первого?
Ответ в вашем тексте. Вы переходите к чему-то новому и возвращаетесь туда, откуда пришли. Следовательно, segue forward - это новый контроллер, контент которого определяется тем, что вы задали в качестве содержимого по умолчанию или в вашем методе 'prepareForSegue'. Когда вы вернетесь назад, вы вернетесь туда, откуда вы пришли, у которого есть все исходное содержание. Поэтому подумайте о том, что контроллеры представлений создаются и складываются, когда вы выходите вперед и выпрыгиваете и отбрасываете назад. –