为啥我的 unwind segue 会使我的应用程序崩溃?
Posted
技术标签:
【中文标题】为啥我的 unwind segue 会使我的应用程序崩溃?【英文标题】:Why is my unwind segue crashing my app?为什么我的 unwind segue 会使我的应用程序崩溃? 【发布时间】:2016-12-12 17:27:24 【问题描述】:我正在尝试创建一个 unwind segue,它将我带回两个 viewController,我认为我已经正确设置了所有内容,但是当我执行 segue 时它崩溃并且没有打印任何错误...
这是我所做的:
在 DESTINATION viewController 中,我们将其称为 VC1(堆栈底部)我创建了这个动作:
@IBAction func unwind(segue:UIStoryboardSegue)
在界面构建器中,我通过退出按钮将 VC3(第三个视图控制器)连接到 unwind segue,并将其命名为“unwind”。
我像这样调用perform for segue:
performSegue(withIdentifier: "unwind", sender: self)
这是视图控制器和 segue 标识符
http://imgur.com/a/gJPYQ
“删除行程”按钮在处理完所有其他逻辑后调用 segue。
一旦调用,我的应用程序崩溃,没有错误消息,并向我显示 AppDelegate 屏幕。怎么回事?
【问题讨论】:
这种崩溃主要是由于标识符错误造成的。你确定你使用了正确的标识符吗? 你也在prepareForSegue上做些什么吗? 故事板中的标识符也是“展开”。不,prepareForSegue 中没有任何内容。 我猜如果你在你的 unwind segue 函数中打印一些东西它不会出现在控制台中? 也许故事板截图会有所帮助。 【参考方案1】:如果你推送了你的 VC,你可以使用:
navigationController?.popToRootViewControllerAnimated(true)
【讨论】:
我需要返回 两个 viewControllers。解雇只会退回一次。 对,我读得太快了。但是如果你推你的VC,你可以使用navigationController?.popToRootViewControllerAnimated(true)。 抱歉没用。【参考方案2】:如果您有两个 VC 以模态方式呈现,那么您将需要以模态方式关闭两个 VC。采用:
dismiss(..., completion:
dismiss(..., completion: nil)
您当前的“展开”转场只是再次呈现原始转场。也许您没有正确设置标识符,或者您忽略了视图层次结构。
【讨论】:
展开不会“再次呈现原始的”。这与再次切换到根控制器是一样的。以上是关于为啥我的 unwind segue 会使我的应用程序崩溃?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 ntdll.dll 会使我的 c++ 可执行文件崩溃?