【问题标题】:swift prepareForSegue not working / exc_breakpoint (code=exc_i386_bpt subcode=0x0)swift prepareForSegue 不工作 / exc_breakpoint (code=exc_i386_bpt subcode=0x0)
【发布时间】:2014-12-23 03:22:46
【问题描述】:

我有这个根本没有被调用的函数。我没有准备好继续打印...

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 (code=exc_i386_bpt subcode=0x0)。我想知道这是什么原因?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您的 ChatRoomViewController 是否位于导航控制器中?如果是,那么 segue.destinationViewController 不会指向 ChatRoom 控制器?只是一个猜测。在这种情况下,您需要类似:

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

    当 performSegueWithIdentifier 行被注释掉时,prepareForSegue 永远不会被调用。从情节提要中显式实例化的下一行绕过了对它的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多