我正在尝试在我的游戏中创建暂停屏幕。我已经在我的storyboard中添加了一个'PauseScreen'视图控制器,Storyboard ID和Restoration ID设置为"PauseScreenID",并且为了转到暂停屏幕,我在“GameScene”中创建了以下函数:
func pauseSceenTransition(){
let viewController = UIStoryboard(name: "Main", bundle:nil).instantiateViewControllerWithIdentifier("PauseScreenID") as UIViewController
let currentViewController = (UIApplication.sharedApplication().delegate as AppDelegate)
currentViewController.window?.rootViewController?.presentViewController(viewController, animated: false, completion: nil)
}
然而当它被调用时,我收到了错误提示:
警告:尝试在不在窗口层次结构中的“AppName.StartScreenViewController: 0x7fae61f79980”上呈现“AppName.PauseScreen: 0x7fae61fe5ff0”!
“StartScreenViewController”是我启动屏幕的视图控制器,也是初始视图控制器。然后它进入“GameScene”,这就是“PauseScreen”所需的地方。如果我将初始视图控制器设置为“GameViewController”/“GameScene”,那么它可以正常工作,因此我认为需要更改第二行:
let currentViewController = (UIApplication.sharedApplication().delegate as AppDelegate)
我需要确保它在"GameViewController"上显示"暂停屏幕",而不是在"StartScreenViewController"上,但我不确定该如何实现。
if
语句中调用UIAlertController
。按钮内的常规if
语句可以正常显示UIAlertView
,但这些if语句的true
结果会引发上述相同的错误。 - EthanUIAlertController
:https://dev59.com/iF8d5IYBdhLWcg3wsDxW - Jeffery Thomas