У меня есть MainViewController и я представляю другой контроллер представления VC1.От VC1 я представляю другой вид контроллера VC2.Я передаю дату из VC2-> VC1-> MainViewController, используя замыкания.
VC2-> Значение VC1 прошло, VC2 отклонено, значение VC1-> MainViewController прошло, а VC1 отклонено
После того, как MainViewController получилданные из VC2 выдвигает другой контроллер представления VC3.
UIViewController VC2 не деинициализируется после закрытия.Я получаю данные сокета в VC2 даже после того, как он уволен и значения повторно переданы в MainViewController.И MainViewController нажимает VC3 несколько раз.
class MainViewController: UIViewController {
@objc func goToVC1() {
let vc1 = VC1()
vc1.callBack = { [weak self] result in
let vc3 = VC3()
vc3.result = result
self?.navigationController?.pushViewController(vc3, animated: true)
}
}
}
class VC1: UIViewController {
var callBack: ((String)->Void)?
@objc func goToVC2() {
let vc2 = VC2()
vc2.callBack = { [weak self] result in
self?.callBack?(result)
self?.dismiss(animated: false, completion: nil)
}
}
@objc func gotDataHere(_ string: String) {
self.callBack?(string)
self.dismiss(animated: false, completion: nil)
}
}
class VC2: UIViewController {
var callBack: ((String)->Void)?
@objc func methodCalledRepeatedly(_ string: String) {
self.callBack?(string)
self.dismiss(animated: true, completion: nil)
}
}
class VC3: UIViewController {
var result: String?
override func viewDidLoad() {
super.viewDidLoad()
print(result)//Printed repeatedly
}
}