Unwind segue 不起作用 SWIFT
Posted
技术标签:
【中文标题】Unwind segue 不起作用 SWIFT【英文标题】:Unwind segue doesn't work SWIFT 【发布时间】:2015-01-03 11:05:28 【问题描述】:我有一个导航控制器,带有一个表格视图。当我按下一个单元格时,详细视图控制器会打开。
在我的根视图控制器中,我有:
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 go to 和 return 之后,当我返回根视图控制器按返回按钮时,我的应用程序崩溃。控制台不会给我错误。它只是崩溃。
我想我忘记了解开这个序列。 所以在我的详细视图控制器中,我添加了:
@IBAction func unwindToViewController(segue: UIStoryboardSegue)
println("unwind function")
我在情节提要中使用“退出”将此功能连接到后退按钮。
当我运行我的应用程序时,如果我按下后退按钮,控制台不会显示我的打印“展开功能”,因此不会调用 unwindToViewController。为什么?
我的应用仍然崩溃...
【问题讨论】:
【参考方案1】:您的unwindToViewController
方法应该放在根viewController 中,然后从detailViewController 中的按钮按住ctrl 并拖动到InterfaceBuilder 中的Exit
图标。在弹出菜单中选择该方法。
另一种方法是在从 detailViewController 调用的 rootViewController 中声明一个带有函数的协议。您已经将 rootViewController 设置为 detailViewController 的委托。在该函数中,您调用 dismissViewController
。
【讨论】:
好的,现在可以了,虽然我的应用程序仍然崩溃,但我一定有另一个问题。【参考方案2】:快速回答...
我遇到了类似的问题。
func: "segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue
" 从未被调用过。
解决方案:
由于我没有“UINavigationController”,因为我只是将应用程序嵌入到导航控制器中,因此我为导航控制器创建了一个 UINavigationController 子类,并在其上添加了上面命名的函数。现在应用调用“segueForUnwindingToViewController”
【讨论】:
以上是关于Unwind segue 不起作用 SWIFT的主要内容,如果未能解决你的问题,请参考以下文章