1

我通过 openInMaps(launchOptions:) 从我的 ViewController 打开 Maps.app,并且在离开或返回应用程序时不会触发任何生命周期方法。

示例项目: https ://github.com/raphaelseher/OpenInMaps

示例代码:

let placeMark = MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: 46.6413035, longitude: 14.2425444))
let mapItem = MKMapItem(placemark: placeMark)
mapItem.name = "Klagenfurt"
mapItem.openInMaps(launchOptions: nil)

有人可以向我解释为什么这是这种行为吗?

4

1 回答 1

1

这是因为您的应用程序不会更改其可见视图控制器。所以不会触发视图控制器生命周期事件。

但是,会触发应用程序生命周期事件。可以通过在默认通知中心注册来观察它们。所有可用的事件都可以在 UIApplication 的文档中找到。

您可以使用以下代码注册观察者:

NotificationCenter.default.addObserver(self, 
                                       selector: #selector(self.applicationDidResignActive),
                                       name: Notification.Name.UIApplicationWillResignActive,
                                       object: nil)

并添加方法:

func applicationDidResignActive(notification: NSNotification) {     
    // handle event
}
于 2017-04-26T14:14:56.673 回答