当应用程序启动时,由于重要的位置更改,即使它在后台不可见,也会调用viewDidAppear

时间:2015-06-01 22:27:51

标签: ios iphone location core-location

我注意到,当我的应用程序启动时(后台)由于显着的位置更改而调用viewDidAppear,即使屏幕关闭且应用程序肯定不可见(我在家里)屏幕和屏幕无论如何都是关闭的。)

换句话说,视图并没有真正出现。我可以理解,viewDidLoad将被调用,因为这个视图控制器将在didFinishLaunchingWithOptions中实例化,这就是在这种情况下被调用的内容。

但是如果viewDidAppear在屏幕上看不到(显示已关闭,而且我在主屏幕上),为什么会被调用?

iOS总是在viewDidLoad之后调用viewDidAppear,无论它是否真的出现?

如果是这样,我如何区分实际出现的视图和不真实可见的情况?

1 个答案:

答案 0 :(得分:3)

您可以使用UIApplication applicationState媒体资源来区分后台启动时调用viewDidAppear的时间以及视图实际显示在用户上的时间。 ; s屏幕。例如:

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)

    let application: UIApplication = UIApplication.sharedApplication()

    switch application.applicationState {
    case .Active:
        // Do something when the view actually appears.
    case .Inactive:
        // The app is briefly Inactive when an it's launched from 
        // "not running/terminated". viewDidAppear might be called while the
        // applicationState property is still set to this.
    case .Background:
        // Don't do anything because the view didn't really appear on screen
        // for the user.
    }
}

当我的应用程序在后台由locationManagerDelegate.locationManager(didVisit)启动时,这似乎对我有用。我非常有信心,对于重大的地理位置变化,它会是一样的。