Swift 错误:“...其视图不在窗口层次结构中。”与标识符进行对等

Posted

技术标签:

【中文标题】Swift 错误:“...其视图不在窗口层次结构中。”与标识符进行对等【英文标题】:Swift Error: "...whose view is not in the window hierarchy." performseguewithidentifier 【发布时间】:2016-07-11 06:47:51 【问题描述】:

一旦到达数组的最后一个索引,我希望应用程序移动到结束屏幕。这就是我所拥有的代码,其中“endWorkout”是模态 segue 标识符:

if (index < workouts2.endIndex-1) 
        index++;

else 
        timerLabel.pause();
        timerLabel.reset();
        performSegueWithIdentifier("endWorkout", sender: self)
        println("Hello")

应用程序过渡到结束锻炼屏幕很好,但我在 xcode 控制台中得到以下错误的不间断循环: 其视图不在窗口层次结构中! 你好

它还不断打印出只应打印一次的打印语句“Hello”。我读过的其他解决方案建议 performSegueWithIdentifier 应该在方法“viewDidAppear”中,但我需要它在这个特定方法的条件块内,因为屏幕应该出现在整个锻炼程序的末尾。我究竟做错了什么?谢谢!

【问题讨论】:

whose view is not in the window hierarchy的可能重复 您发布的代码是否在循环中? 【参考方案1】:

消息“其视图不在窗口层次结构中”,因为当您已经转换到另一个视图时代码仍在执行。尝试在performSegueWithIdentifier 之后调用returnbreak 以停止循环

【讨论】:

我添加了 return 并且成功了!不敢相信我在发帖之前没有尝试过。谢谢! 只是为了进一步扩展,当您以模态方式呈现另一个视图控制器时,现有的视图控制器对象(正在呈现的对象)仍然存在于模态视图控制器(正在呈现的对象)下方,因此如果您有像这样的循环它将继续执行,这就是这里发生的事情。【参考方案2】:

尝试在performSegueWithIdentifier("endWorkout", sender: self)之后添加(break;)。

【讨论】:

以上是关于Swift 错误:“...其视图不在窗口层次结构中。”与标识符进行对等的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 尝试呈现其视图不在窗口层次结构中

警告:尝试在其视图不在窗口层次结构中的 * 上呈现 * - swift

尝试呈现其视图不在窗口层次结构中的 UIAlertController (Swift 3/Xcode 8)

如何解决此错误“警告:尝试呈现其视图不在窗口层次结构中”?

收到推送通知时显示视图控制器不起作用,其视图不在窗口层次结构中

尝试在其视图不在窗口层次结构中的 UIViewController 上呈现 UIViewController