performSegueWithIdentifier

performSegueWithIdentifier

我正在UIButton Click事件侦听器中执行条件segue。我的猜测是在情节提要中的“ pathanViewController”和“ dekhunViewController”之间以“ pathanToDekhun”标识符绘制的。但是我得到NsInternalInconsistencyException作为

*** Assertion failure in -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished], /SourceCache/UIKit_Sim/UIKit-3318.16.14/Keyboard/UIKeyboardTaskQueue.m:374

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.'


单击按钮后,我执行了外部api调用,并且在成功返回消息后,我使用performSegueWithIdentifier调用了segue。但是segue从未真正发生过。以下是我在pathanViewController中的代码部分。请让我知道我做错了。

 @IBAction func sendBtnListener(sender: AnyObject) {
        if !self.commentSection.text.isEmpty {
            var submitVoganti = DataSerialization(brandName: self.brandName!, rating: Int(self.sliderStatus.value*5), commentText: self.commentSection.text, anonymous: switchBox.on ? true : false)
            var dataSet = DataSet()
            dataSet.postComment(submitVoganti.toJson(),{
                (id) in
                self.performSegueWithIdentifier("pathanToDekhun", sender: self)
                println(id)
            })
        } else{
            println("Comment field should not be empty")
        }
    }

    //Check whether a segue should be triggered or not
    override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
        if identifier == "pathanToDekhun" {
            return false
        }
        // by default, transition
        return true
    }

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        var dekhunScene = segue.destinationViewController as ThirdViewController
        dekhunScene.keyword = self.brandName
    }

最佳答案

我做错了是我的performSegueWithIdentifier在主队列中没有被调用。这就是为什么它引发异常。我现在正在做的只是按如下方式编辑我的代码-

 dataSet.postComment(submitVoganti.toJson(),{
                (id) in
                dispatch_async(dispatch_get_main_queue()){
                   self.performSegueWithIdentifier("pathanToDekhun", sender: self)
                }
                println(id)
            })


并注释掉“替代功能func shouldPerformSegueWithIdentifier”功能。而已。

10-08 07:53