viewWillAppear并不总是在viewController存在时执行



我正在开发一个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?()   
}
}

如果您有任何疑问,请在评论中告诉我。

最新更新