【问题标题】:Swift 4 Unwind segue not working on navigation controllerSwift 4 Unwind segue 在导航控制器上不起作用
【发布时间】:2017-11-09 18:41:16
【问题描述】:

我正在使用 Swift 4 开发一个应用程序,我正在尝试解开一个 segue。我有一个表视图控制器,当用户选择一个单元格时,segue 发生在一个导航控制器上,该控制器与另一个控制器有关系根视图控制器UIViewController。在UIViewController 中,我在导航项中有一个UIButton,我通过选择按钮并拖动退出来使用UIButton 设置展开,我在UITableViewController 中有展开代码,如下所示:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            if segue.identifier == "segueRSVP" {
            }
        }



    @IBAction override func unwind(for unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) {
        print("Here")
    }

但是什么都没有发生,甚至没有被触发。

这是我的截图:

【问题讨论】:

  • 将tableview放在导航控制器中,你甚至不需要展开segue或按钮。
  • 你在我的截图中看不到,但是 tableview 控制器上方有一个导航控制器....所以导航控制器 -> tableview -> 导航控制器 -> UIViewController
  • 然后删除第二个导航控制器并使用show segue 显示rsvp场景

标签: ios swift segue


【解决方案1】:

将此展开添加到您的 RSVP 控制器:

@IBAction func unwindToThisViewController(segue: UIStoryboardSegue) {
    print("IM BACK")
}

然后控制+拖动细节控制器中的按钮到出口并选择方法:unwindToThisViewController

刚刚在 xcode swift 4 上测试过,它应该可以工作

我不知道为什么,但是当我“覆盖”放松时,它也对我不起作用,所以我设置了自己的 ibaction

【讨论】:

  • 哦嗯删除这个:override func prepare。并删除@IBAction override func unwind 看看是否可行
【解决方案2】:

在我的例子中,使用 @objc 关键字标记 swift unwind 函数。

@objc func unwindToThisViewController(segue: UIStoryboardSegue) { ... }

希望这行得通。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 2017-03-03
    • 2020-04-24
    相关资源
    最近更新 更多