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从不被调用。 从故事板显式实例化的下一行忽略了它的需要。