在实例化控制器时准备segue崩溃

时间:2016-03-25 08:02:19

标签: ios objective-c uitableview swift2 segue

我正在努力弄清楚prepareForSegue()方法中出现的错误消息。我在此方法中使用的代码与Xcode中默认的Master-Default模板中的代码相同。

但就我而言,这一行崩溃了应用程序:

let controller = (segue.destinationViewController as! UINavigationController).topViewController as! SummaryViewController

出现以下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

我已使用var summaryViewController: SummaryViewController? = nil在顶部声明目标视图控制器,并且我从当前视图控制器到SummaryViewController以及此tableView:didSelectRowAtIndexPath方法有一个segue:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    performSegueWithIdentifier("showSummary", sender: self)
}

但我也尝试直接从tableview单元格中使用segue(并删除此方法),但它仍然崩溃。

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要检查VC是否为零,以便prepareForSegue必须如下:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "showSummary"
        {
            if let controller = (segue.destinationViewController as? UINavigationController)!.topViewController as? SummaryViewController
            {
              // write a the code for SummaryViewController
            }
        }
    }