我注意到,当我的应用程序启动时(后台)由于显着的位置更改而调用viewDidAppear
,即使屏幕关闭且应用程序肯定不可见(我在家里)屏幕和屏幕无论如何都是关闭的。)
换句话说,视图并没有真正出现。我可以理解,viewDidLoad
将被调用,因为这个视图控制器将在didFinishLaunchingWithOptions
中实例化,这就是在这种情况下被调用的内容。
但是如果viewDidAppear
在屏幕上看不到(显示已关闭,而且我在主屏幕上),为什么会被调用?
iOS总是在viewDidLoad之后调用viewDidAppear
,无论它是否真的出现?
如果是这样,我如何区分实际出现的视图和不真实可见的情况?
答案 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)
启动时,这似乎对我有用。我非常有信心,对于重大的地理位置变化,它会是一样的。