swift – 将视图添加到窗口层次结构中

swift – 将视图添加到窗口层次结构中,第1张

概述我想在我的游戏上创建一个暂停屏幕.我在故事板中添加了一个’PauseScreen’viewController,其中Storyboard ID和Restoration ID设置为“PauseScreenID”,并移动到暂停屏幕我在“GameScene”中创建了该功能: func pauseSceenTransition(){ let viewController = UIStoryboa 我想在我的游戏上创建一个暂停屏幕.我在故事板中添加了一个’PauseScreen’vIEwController,其中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.PauseScreen:0x7fae61fe5ff0> on< Appname.StartScreenVIEwController:0x7fae61f79980>其视图不在窗口层次结构中!

“StartScreenVIEwController”是我的开始屏幕的视图控制器,是初始视图控制器.然后转到“GameScene”,这是“PauseScreen”需要去的地方.如果我将初始视图控制器设置为“GameVIEwController”/“GameScene”,它可以工作,所以我认为我需要更改第二行:

let currentVIEwController = (UIApplication.sharedApplication().delegate as AppDelegate)

所以它在“GameVIEwController”上呈现“PauseScreen”,而不是“StartScreenVIEwController”,但我不知道该怎么做.

错误告诉您到底发生了什么.

警告:尝试显示< Appname.PauseScreen:0x7fae61fe5ff0> on< Appname.StartScreenVIEwController:0x7fae61f79980>其视图不在窗口层次结构中!

(UIApplication.sharedApplication().delegate as AppDelegate).window?.rootVIEwController指向StartScreenVIEwController的一个实例.这很糟糕:rootVIEwController应该指向GameScene的一个实例.

根本原因必须是GameScene的呈现方式.从您的描述:

The “StartScreenVIEwController” is the vIEw controller… It then goes to the “GameScene”…

这一定是您的问题所在.你如何从StartScreenVIEwController转到GameScene?

我的猜测是你要为应用程序添加一个新窗口.您需要设置rootVIEwController.

let gameScene = UIStoryboard(name: "Main",bundle:nil).instantiateVIEwControllerWithIDentifIEr("GameSceneID") as UIVIEwControllerlet appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)appDelegate.window?.rootVIEwController = gameScene

当您返回到开始屏幕时,再次设置rootVIEwController.

let initialVIEwController = UIStoryboard(name: "Main",bundle:nil).instantiateInitialVIEwController() as UIVIEwControllerlet appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)appDelegate.window?.rootVIEwController = initialVIEwController

您可以使用transitionFromViewController(,toViewController:,duration:,options:,animations:,completion:)设置根视图控制器的动画.

总结

以上是内存溢出为你收集整理的swift – 将视图添加到窗口层次结构中全部内容,希望文章能够帮你解决swift – 将视图添加到窗口层次结构中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1051864.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存