我有一个带有表视图的导航控制器。当我按一个单元格时,详细信息视图控制器将打开。

在我的根视图控制器中,我有:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "detailview" {
        var destination:DetailViewController = segue.destinationViewController as DetailViewController
        destination.delegate=self
    }
}

在详细视图控制器中,我有一个后退按钮:
@IBAction func back() {
    self.navigationController?.popViewControllerAnimated(true)
}

问题是,当2转到并返回后,当我在根视图控制器上按“后退”按钮返回时,我的应用程序崩溃了。控制台不会给我错误。它只是崩溃。

我想我已经忘记放松了。
所以在我的详细视图控制器中,我添加了:
@IBAction func unwindToViewController(segue: UIStoryboardSegue) {
    println("unwind function")
}

我通过故事板中的“退出”将该功能连接到我的后退按钮。

运行我的应用程序时,如果按后退按钮,则控制台不会显示我的打印“展开功能”,因此不会调用unwindToViewController。为什么呢

而且我的应用仍然崩溃...

最佳答案

应该将unwindToViewController方法放置在根viewController中,然后将ctrl从detailViewController中的按钮拖到InterfaceBuilder中的Exit图标。在弹出菜单中选择该方法。

另一种方法是在rootViewController中声明一个函数,该函数从detailViewController调用。您已经将rootViewController设置为detailViewController的委托。在该函数中,您调用dismissViewController

关于ios - 取消segue无效SWIFT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27754132/

10-13 02:47