我正在开发一个iOS应用程序。
有一个视图控制器 A,它以编程方式将 segue 执行到详细信息视图控制器 D。
在该详细信息视图控制器 D 上,用户可以更改一些信息,当单击后退按钮查看控制器 A 时应更新这些信息。
在视图控制器 A 上,我包含了这个函数:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
determineMyCurrentLocation()
print("reloading data")
downloadJSONFavoritos {
print("reloading viewwillappear")
self.collectionViewFavoritos.reloadData()
}
}
我的问题是,当返回视图控制器 A 时并不总是调用此函数,然后 A 中的信息没有按预期更新。
我将创建一个简单的示例,请根据您的需求进行调整。
视图控制器 A:
class ViewControllerA: UIViewController {
func someMethod() {
let viewControllerD = // creation and displaying logic of your viewController D
viewControllerD.updateCompletionHandler = { [unowned self] in
/// Any updates goes here ...
}
}
}
视图控制器 D:
class ViewControllerD: UIViewController {
var updateCompletionHandler: (() -> Void)?
/// Just example
@IBAction func triggerUpdateButton(_ sender: UIButton) {
/// Call it, in place where user make changes
updateCompletionHandler?()
}
}
如果您有任何疑问,请在评论中告诉我。