swift prepareForSegue not working / exc_breakpoint(code = exc_i386_bpt subcode = 0x0)

我有这个function,根本没有被调用。 我没有事件准备赛格印…

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { println("PREPARING FOR SEGUE"); if (segue.identifier == "ToChatRoom") { var chatView:ChatRoomViewController = segue.destinationViewController as ChatRoomViewController; var index = coralReefTableView.indexPathForSelectedRow()!.row; var id = roomIDArray.objectAtIndex(index); println("ID IS : \(id)"); chatView.selectedRoomID = id as Int; } } 

我正在用这些代码行调用segue …

  func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { var cell = tableView.cellForRowAtIndexPath(indexPath); //performSegueWithIdentifier("ToChatRoom", sender: self); let nextController:AnyObject! = self.storyboard?.instantiateViewControllerWithIdentifier("chatRoom"); self.showViewController(nextController as UIViewController, sender: nextController); 

当我取消注释performSegueWithIdentifier,我得到这个错误:exc_breakpoint(代码= exc_i386_bpt子代码= 0x0)。 我想知道这是什么原因?

你的ChatRoomViewController在导航控制器里面吗? 如果是,那么segue.destinationViewController将不会指向ChatRoom控制器? 只是一个猜测。 在这种情况下,你需要这样的东西:

 if segue.identifier == "ToChatRoom" { let navigationController = segue.destinationViewController as UINavigationController let chatView = navigationController.viewControllers[0] as ChatRoomViewController var index = ... 

当执行SegueWithIdentifier行被注释掉时,prepareForSegue从不被调用。 从故事板显式实例化的下一行忽略了它的需要。