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
之后调用return
或break
以停止循环
【讨论】:
我添加了 return 并且成功了!不敢相信我在发帖之前没有尝试过。谢谢! 只是为了进一步扩展,当您以模态方式呈现另一个视图控制器时,现有的视图控制器对象(正在呈现的对象)仍然存在于模态视图控制器(正在呈现的对象)下方,因此如果您有像这样的循环它将继续执行,这就是这里发生的事情。【参考方案2】:尝试在performSegueWithIdentifier("endWorkout", sender: self)之后添加(break;)。
【讨论】:
以上是关于Swift 错误:“...其视图不在窗口层次结构中。”与标识符进行对等的主要内容,如果未能解决你的问题,请参考以下文章
警告:尝试在其视图不在窗口层次结构中的 * 上呈现 * - swift
尝试呈现其视图不在窗口层次结构中的 UIAlertController (Swift 3/Xcode 8)