为啥我的 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 会使我的应用程序崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 unwind segue 回退太远了?

为啥这个旧的依赖会使我的 gradle 崩溃?

为啥 ntdll.dll 会使我的 c++ 可执行文件崩溃?

为啥 sklearn 的训练/测试拆分加上 PCA 会使我的标签不正确?

为啥 __inbyte 会使我的软件崩溃?

为啥这个 WHERE 子句会使我的查询慢 180 倍?