Android上使用的onRestart()
的iOS等价物是什么?
onRestart()
。
答案 0 :(得分:3)
我相信你需要viewWillAppear
方法:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//your code here
}
每次在显示视图之前调用它。因此,当第一次显示视图时,它也会被调用。
如果您想在第一次调用viewWillAppear
时避免运行代码,则必须添加一个标志属性并检查它是否先前已设置过。
答案 1 :(得分:1)
如果您在有问题的场景进入视野时尝试捕捉,您可能会关注两种情况:
如果您从应用内转换到此场景(或解除/弹回此场景)。在这种情况下,请使用viewWillAppear
:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
update() // your routine for updating what is displayed to the user
}
如果您的应用程序正在运行,则按下" home"按钮(或转到另一个应用程序),然后返回到您的应用程序(在终止之前),viewDidAppear
不被调用。要检测该场景,您可以观察.UIApplicationDidBecomeActive
:
private var observer: NSObjectProtocol?
override func viewDidLoad() {
super.viewDidLoad()
observer = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive, object: nil, queue: nil) { [weak self] notification in
self?.update()
}
}
deinit {
if let observer = observer {
NotificationCenter.default.removeObserver(observer)
}
}