我有一个带有表视图的导航控制器。当我按一个单元格时,详细信息视图控制器将打开。
在我的根视图控制器中,我有:
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/