Ios Swift-在prepareForSegue方法中显示警报时发出警告

Ios Swift-在prepareForSegue方法中显示警报时发出警告,ios,swift,uistoryboardsegue,uialertcontroller,Ios,Swift,Uistoryboardsegue,Uialertcontroller,当我呈现UIAlertController时,我不断收到以下警告: 2016-08-16 13:29:48.138 MyProject[602:98207]pushViewController:动画:在现有转换或演示发生时调用;导航堆栈将不会更新 以下是相关代码: override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "toUserDat

当我呈现UIAlertController时,我不断收到以下警告:

2016-08-16 13:29:48.138 MyProject[602:98207]pushViewController:动画:在现有转换或演示发生时调用;导航堆栈将不会更新

以下是相关代码:

  override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "toUserData" && didSelect
    {
        let vc:UserDataViewController = segue.destinationViewController as! UserDataViewController
        vc.unitIndex = self.selectedIndex - 1
    }
    else
    {
        self.showAlert()
        return
    }

}

    func showAlert()
    {
        let alert =  UIAlertController(title: "Error", message: "Are you sure that you set units properly?", preferredStyle: .Alert)
        alert.addAction(UIAlertAction(title: "OK", style: .Default) { _ in })
    self.presentViewController(alert, animated: true, completion: nil)
    }

}
我以前在其他项目中使用过这种结构,我不记得得到过这样的警告

另外,我也不知道我为什么会得到它,因为呈现警报不会打断任何其他与转换相关的操作


提前感谢

我使用了错误的方法来检查是否所有的东西都设置为执行segue,这种事情应该使用
shouldPerformSegueWithIdentifier
方法来完成:

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {

    if identifier == "toUserData" && didSelect
    {
        return true
    }
    else
    {
        self.showAlert()
        return false
    }
}

为segue做准备,这个名字已经告诉我们会发生一些事情,为什么你要在某个segue上展示其他东西呢?
assert()
在这一点上可能是一个更好的操作