performSegueWithIdentifier未执行

时间:2016-06-07 20:55:12

标签: swift segue

我正在尝试使用segue,这是我的代码:

if let status_code = response.response?.statusCode {
    if status_code == 200 {
        // register is ok
        // cancel all warnings
        self.usernameField.hidden = false;
        self.usernameFieldError.hidden = true;
        self.usernameShortError.hidden = true;
        self.usernameTakenError.hidden = true;

        self.performSegueWithIdentifier("registerToFeed", sender: self);
    }
}

(我已经缩短了代码长度)
所以这就是问题:segue根本就没有执行。我在它上面放了一个断点,看看会发生什么,执行流程只是传递给它,什么都不做,非常令人沮丧

我已经读过需要在主线程上调用performSegueWithIdentifier,所以我在我的segue调用之前调用NSThread.isMainThread(),它返回给我true

我还仔细检查了标识符名称是否与我正在调用的名称相同,就是这种情况。

我试着做

dispatch_async(dispatch_get_main_queue()){
    self.performSegueWithIdentifier("registerToFeed", sender: self)
}

正如我在another SO thread中看到的那样,但仍然没有工作,没有任何事情被执行。

所以我不知道为什么这条简单的行不会被执行。谢谢你的帮助。

编辑:所以这是完整的RegisterViewController.swift文件:
http://pastebin.com/dpBBXhe8

问题是程序在第190行崩溃,因为没有执行performSegue。

2 个答案:

答案 0 :(得分:2)

此代码是否在viewDidLoad方法中?如果是,则必须将其移至viewDidAppear

答案 1 :(得分:0)

此代码中的viewController(self)源自何处。 performSegueWithIdentifier(_:sender:)要求从故事板加载调用viewController(故事板不能为零)。

另外,您是否尝试过实施preapreForSegue来查看在调用performSegue时是否调用了此内容? “prepareForSegue”的默认实现不执行任何操作。