【问题标题】:Unwind segue doesn't work SWIFTUnwind segue 不起作用 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。为什么?

我的应用仍然崩溃...

【问题讨论】:

    标签: ios swift uinavigationcontroller segue


    【解决方案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”

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 2016-12-20
      相关资源
      最近更新 更多