Похоже, вы уже можете передавать данные во второй ViewController, но не можете передать некоторые данные обратно.
Таким образом, один из способов - использовать шаблон делегата .
Начните с объявления протокола делегата с методом передачи данных (в вашем случае это может быть просто передача String
)
protocol SecondVCDelegate: class {
func passText(_ text: String)
}
, затем создайте переменную delegate
во втором ViewController
class SecondViewController: UIViewController {
weak var delegate: SecondVCDelegate?
...
}
Теперь вы можете реализовать этот протокол для первого ViewController
extension ViewController: SecondVCDelegate {
func passText(_text: String) {
// do something with text passed from second VC
}
}
, теперь установите delegate
Второго VC как self
, прежде чем нажать его
func passVariables() {
let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "sbHome") as! sbHomeController
viewController.getSleepValue = sleepValue
viewController.delegate = self
navigationController?.pushViewController(viewController, animated: true)
}
, затем во втором VC вы можете простовызовите метод на вашем delegate
и в первом VC этот метод будет вызван
delegate?.passText("Hello First!")