执行关闭视图控制器的功能
Perform function on Dismiss of a View Controller
我在视图控制器的 viewDidAppear 函数上调用 GET(method) API。我在我的第一个视图控制器上使用 导航控制器 展示了一个新的视图控制器。在第二个视图控制器上,我正在调用 Post 方法 的 API 以将另一个条目添加到我的前一个屏幕 Get 方法 API。但是当我关闭第二个视图控制器时,Get API data 保持不变,当我再次运行代码时,数据在第一个视图控制器上更新。有人能告诉我如何在第一个视图控制器上检查我的第二个视图控制器被关闭,以便我可以在那里调用 API。
我找到了解决方案。在 viewDidAppear() 或 viewWIllAppear() 上调用 API 无效。这将通过使用 swift 闭包来完成。
代码如下:
class 1stViewController: UIViewController {
@IBAction func buttonTapped(_ sender: UIButton) {
guard let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else { return }
secondController.callbackClosure = { [weak self] in
print("call API")
}
self.navigationController?.pushViewController(secondController, animated: true)
}
}
在第二个视图控制器上:
class SecondViewController: UIViewController {
var callbackClosure: ((Void) -> Void)?
override func viewWillDisappear(_ animated: Bool) {
callbackClosure?()
}
}
我在视图控制器的 viewDidAppear 函数上调用 GET(method) API。我在我的第一个视图控制器上使用 导航控制器 展示了一个新的视图控制器。在第二个视图控制器上,我正在调用 Post 方法 的 API 以将另一个条目添加到我的前一个屏幕 Get 方法 API。但是当我关闭第二个视图控制器时,Get API data 保持不变,当我再次运行代码时,数据在第一个视图控制器上更新。有人能告诉我如何在第一个视图控制器上检查我的第二个视图控制器被关闭,以便我可以在那里调用 API。
我找到了解决方案。在 viewDidAppear() 或 viewWIllAppear() 上调用 API 无效。这将通过使用 swift 闭包来完成。
代码如下:
class 1stViewController: UIViewController {
@IBAction func buttonTapped(_ sender: UIButton) {
guard let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else { return }
secondController.callbackClosure = { [weak self] in
print("call API")
}
self.navigationController?.pushViewController(secondController, animated: true)
}
}
在第二个视图控制器上:
class SecondViewController: UIViewController {
var callbackClosure: ((Void) -> Void)?
override func viewWillDisappear(_ animated: Bool) {
callbackClosure?()
}
}