用show segue展开segue干扰

时间:2016-09-24 18:21:18

标签: ios swift debugging fatal-error unwind-segue

我想要实现的目标背景:

MainViewController提供了TableVC。 我将点击一个单元格来呈现DetailVC。 能够在TableVC或DetailVC的导航栏上通过doneBarButton解除。

所有doneBarButton都植根于MainViewController,所以我认为无论视图控制器将什么解散到MainViewController。

我遇到的是点击我的TableVC的doneBarButton而不是我的DetailVC的doneBarButton上的崩溃。因为它们都是通过接口构建器生根到MainViewController,所以我认为我不应该在TableVC的prepareForSegue方法中编写任何代码,但是标识符的switch case正在突出显示并且调试控制台输出

  

"致命错误:在展开可选值时意外发现nil"

我不完全确定在哪里查明需要修复的内容,无论是在界面构建器中还是包含在prepareForSegue方法中的内容。

override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
    switch segue.identifier! // Line highlighted with error in debug console
    {
    case "toDetailVC": // Properly presents detailVC through a cell being tapped

    default:
    break
    }
 }

1 个答案:

答案 0 :(得分:1)

您尚未为展开segue 分配标识符,因此该属性为!。由于你强行用segue.identifier打开它,它会崩溃。

要解决此问题,请在文档大纲视图中找到展开segue 。选择它,然后在 Attributes Inspector 中,为segue指定一个标识符。

Xcode interface showing unwind segue ID

替代解决方案:

由于您可能不关心展开标识符,您也可以通过选择更安全的方式来解开问题来解开switch segue.identifier ?? "" {

??

nil coalescing operator {{1}}的使用用空字符串替换未分配的标识符。