我在AppDelegate
中使用以下代码在选择按钮时在应用程序中显示一个弹出窗口,我最终将其移动到标签超链接,但只是当前测试。
let storyboard = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("test") as! ViewController
let popOverVC = UIStoryboard(name:"Main", bundle: nil).instantiateViewControllerWithIdentifier("sbPopUpID") as! PopUpViewController
storyboard.addChildViewController(popOverVC)
popOverVC.view.frame = storyboard.view.frame
storyboard.view.addSubview(popOverVC.view)
popOverVC.didMoveToParentViewController(storyboard)
self.window?.rootViewController?.presentViewController(storyboard, animated: true, completion: nil)
第一次选择按钮时,此功能正常,但在所有后续按钮按下时,会显示以下错误。
2016-10-28 11:27:40.551 testfordeeplinks [20496:104536]警告: 试图出席 在他看来不是 在窗口层次结构中!
答案 0 :(得分:3)
对于任何未来偶然发现这种情况的人来说,这就是我解决的问题;
https://svn/path/branches/releases/Release_10_1
答案 1 :(得分:0)
rootViewController
不一定是指当前可见的视图控制器。例如,如果您使用UINavigationController
,rootViewController
将保存对该导航控制器的引用,该控制器本身深埋在视图层次结构中,因此当您尝试在其上显示视图控制器时错误。我建议你做的是抓住navController.viewControllers
中的最后一个视图控制器并在其上显示你的弹出窗口。请参阅以下代码:
let appDel = UIApplication.sharedApplication().delegate as! AppDelegate
if let navController = appDel.keyWindow?.rootViewController as? UINavigationController {
if let visibleVC = navController.viewControllers.last {
visibleVC.presentViewController(storyboard, animated: true, completion: nil)
}
}
尝试一下,让我知道。 :)