Доброго времени суток
Подскажите, как правильно передать данные в предыдущий ViewController?
К примеру я просто хочу переходить во второй контроллер, вводить число и при возвращении назад, выводить это число уже в первом контроллере. Как это правильно сделать, инфы об этом найти не могу адекватной
Передача данных в предыдущий ViewController
ivan.tishkov
#1
ivan.tishkov
#3
Нет, это как раз передача данных из контроллера A в контроллер B, а мне нужно наоборот, что бы данные отправлялись из контроллера B в контроллер A
nikmich
#5
Это можно сделать с помощью делегата.
Предположим, мы имеем такой второй вьюконтроллер:
class SecondVC: UIViewController {
weak var delegate: SecondVCDelegate?
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.red
}
override func viewDidDisappear(_ animated : Bool) {
super.viewDidDisappear(animated)
if self.isMovingFromParentViewController {
self.delegate?.secondVC_BackClicked(data: "hello")
}
}
}
protocol SecondVCDelegate: class {
func secondVC_BackClicked(data: String)
}
И первый:
class FirstVC: UIViewController, SecondVCDelegate {
private var secondVC: SecondVC!
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer.init(target: self, action: #selector(view_Tapped(sender:)))
self.view.addGestureRecognizer(tap)
}
@objc private func view_Tapped(sender: UITapGestureRecognizer) {
if secondVC == nil {
secondVC = SecondVC()
secondVC.delegate = self
}
self.navigationController?.pushViewController(secondVC, animated: true)
}
func secondVC_BackClicked(data: String) {
print (data)
}
}