我有一个带有桌面视图的导航控制器。按下单元格时,详细视图控制器将打开。
在我的根视图控制器中,我有:
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不会被调用。为什么?
我的应用程序仍然崩溃......
答案 0 :(得分:3)
您的unwindToViewController
方法应放在根视图控制器中,然后从detailViewController中的按钮按住Ctrl键拖动到InterfaceBuilder中的Exit
图标。在弹出菜单中选择该方法。
另一种方法是使用从detailViewController调用的rootViewController中的函数声明一个协议。您已将rootViewController设置为detailViewController的委托。在该功能中,您可以拨打dismissViewController
。
答案 1 :(得分:0)
迅速回答......
我有类似的问题。
功能:" segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue
"从未被称为。
解决方案:
因为我没有" UINavigationController",因为我只是将应用程序嵌入到导航控制器中,我为导航控制器创建了一个UINavigationController子类,并在其上添加了上面命名的函数。现在应用程序调用" segueForUnwindingToViewController"