iOS等效于onRestart()

时间:2016-10-15 22:57:48

标签: ios swift

Android上使用的onRestart()的iOS等价物是什么?

当正在重新向用户显示当前活动时(用户已导航回到该活动),将调用

onRestart()

2 个答案:

答案 0 :(得分:3)

我相信你需要viewWillAppear方法:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    //your code here
}

每次在显示视图之前调用它。因此,当第一次显示视图时,它也会被调用。 如果您想在第一次调用viewWillAppear时避免运行代码,则必须添加一个标志属性并检查它是否先前已设置过。

答案 1 :(得分:1)

如果您在有问题的场景进入视野时尝试捕捉,您可能会关注两种情况:

  1. 如果您从应用内转换到此场景(或解除/弹回此场景)。在这种情况下,请使用viewWillAppear

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
    
        update()     // your routine for updating what is displayed to the user
    }
    
  2. 如果您的应用程序正在运行,则按下" 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)
        }
    }