В принципе, у меня есть пять контроллеров представлений, первый из которых имеет два текстовых поля, посредством которых пользователь может вводить в них значения. Впоследствии, исходя из выбора пользователя из двух представлений сборщика, он либо будет направлен на второй, третий, четвертый или пятый контроллер просмотра, используя функцию instantiateViewController, как только будет нажата кнопка «Далее». Таким образом, никакие segues не использовались вообще здесь.Передача данных между представлениями, учитывая, что я использую функцию instantiateViewController
То, что я хотел бы сделать, это:
(1) Перенести данные, которые пользователь ввел в текстовых полях в первом контроллере представления либо второй, третий, четвертый или пятый контроллер представления в зависимости от его/ее выбор на выборщики?
(2) Когда пользователь возвращается со второго, третьего, четвертого или пятого вида на первый вид. Я хочу, чтобы данные, которые он ввел в текстовые поля, были сохранены?
Я попытался использовать prepareforsegue и ввести segues между самими контроллерами представления, а не привязывать их к кнопкам. Однако для меня все не получилось.
Любая помощь по вышесказанному очень ценится!
Thanks, Shadi.
Вот мой код первой ViewController который не работает:
импорт UIKit
класс ViewController: UIViewController {
@IBOutlet var TextField: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func NextVC(_ sender: Any) {
let storyboard : UIStoryboard = UIStoryboard (name: "Main", bundle: nil)
let nextViewController = storyboard.instantiateViewController(withIdentifier: "secondVC") as UIViewController
self.present(nextViewController, animated: true, completion: nil)
performSegue(withIdentifier: "fromFirstToSecondVCSegue", sender: self)
func prepareForSegue (segue: UIStoryboardSegue, sender: Any?) {
var DestViewController : SecondViewController = segue.destination as! SecondViewController
}
}
}
Пожалуйста посоветуйте, что мне нужно сделать, чтобы исправить это?
Значения сохраняются в навигационном контроллере. Вы пробовали это? В противном случае вы просто используете prepareForSegue для передачи данных обратно в исходный контроллер просмотра. – Ro4ch
Когда вы создаете экземпляр нового контроллера вида, вы можете передать данные, просто установив свойства так же, как в 'prepareForSegue'. Чтобы передать данные назад, вам нужно использовать шаблон делегирования. Тем не менее, segues и unind segues лучше. Каковы были ваши проблемы? – Paulw11