我试图在AppDelegate中创建一个UIAlertController来处理我的前台本地通知。我的代码如下所示:尝试在其视图不在窗口层次结构中的UINavigationController上呈现UIAlertController
func application(application: UIApplication, didReceiveLocalNotificationnotification: UILocalNotification) {
let state: UIApplicationState = application.applicationState
if state == .Active {
let alert: UIAlertController = UIAlertController(title: "test", message: "test", preferredStyle: UIAlertControllerStyle.Alert)
self.window?.rootViewController?.presentViewController(alert, animated: true, completion: nil)
}
}
但后来我得到这个错误:试图提出UIAlertController上的UINavigationController谁的观点是不是在窗口层次。
我已经找到了可能的解决方案,但它们不适合我(dispatch_async,创建一个func)。我认为这与'rootviewcontroller'部分有关,但我不知道如何解决它。这可以修复吗?还是有另一种方式来处理在前台的本地通知?
无论何时修改UI或显示新视图,您都需要确保它位于主线程上。如果你有奇怪的问题,很多时候dispatch_async(dispatch_get_main_queue()){...}将解决与UI相关的问题。 – SeanRobinson159