【问题标题】: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 函数中打印一些东西它不会出现在控制台中?
  • 也许故事板截图会有所帮助。

标签: ios swift segue unwind-segue


【解决方案1】:

如果你推送了你的 VC,你可以使用:

navigationController?.popToRootViewControllerAnimated(true)

【讨论】:

  • 我需要返回 两个 viewControllers。解雇只会退回一次。
  • 对,我读得太快了。但是如果你推你的VC,你可以使用navigationController?.popToRootViewControllerAnimated(true)。
  • 抱歉没用。
【解决方案2】:

如果您有两个 VC 以模态方式呈现,那么您将需要以模态方式关闭两个 VC。采用: dismiss(..., completion: { dismiss(..., completion: nil)

您当前的“展开”转场只是再次呈现原始转场。也许您没有正确设置标识符,或者您忽略了视图层次结构。

【讨论】:

  • 展开不会“再次呈现原始的”。这与再次切换到根控制器是一样的。
猜你喜欢
  • 2012-01-24
  • 2014-06-27
  • 1970-01-01
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
相关资源
最近更新 更多