Я хочу получить тот же обратный вызов в ViewController, который открывается во время ответа сервера в моем приложении Swift.
У меня есть два ViewController.Первый ViewController регистрирует callBack из класса «NetworkService».
Второй ViewController открывается из первого ViewController, а второй получает «NetworkService» из первого ViewController, инициализированного в переменной, а затем регистрирует тот же callBack,
Когда я пытаюсь получить обратный вызов с сервера, если открывается первый ViewController, я получаю ответ.Если я открываю второй ViewController и пересылаю ответ, я получаю это правильно во втором ViewController.
НО, если я вернусь к первому ViewController и получу ответ, он все время будет получен только на Second ViewController.
class NetworkService {
var onFunction: ((_ result: String)->())?
func doCall() {
self.onFunction?("result")
}
}
class MyViewController: UIViewController {
let networkService = NetworkService()
override func viewDidLoad() {
super.viewDidLoad()
networkService.onFunction = { result in
print("I got \(result) from the server!")
}
}
}
Я открываю secondViewController следующим образом:
let vc = self.storyboard!.instantiateViewController(withIdentifier: "second") as! SecondViewController
vc. networkService = networkService
self.navigationController?.pushViewController(vc, animated: true)
И Второй ViewController:
class SecondViewController: UIViewController {
var networkService: NetworkService?
override func viewDidLoad() {
super.viewDidLoad()
networkService!.onFunction = { result in
print("I got \(result) from the server!")
}
}
}
Как можно было бы снова получить ответ в первом ViewController, а затем вернуться к первому ViewController от второго, вызывающего popViewController?
self.navigationController?.popViewController(animated: false)