【问题标题】:Why are IBAction methods missing from the storyboard exit button?为什么情节提要退出按钮中缺少 IBAction 方法?
【发布时间】:2016-11-01 18:00:33
【问题描述】:

我正在尝试执行 unwind segue。我已经在一个全新的项目中测试了我的逻辑并且能够验证模式。但是在我的实际工作项目中,相同的模式不起作用。

我正在尝试从我的SettingsController 放松到我的EditorViewController。但是我的EditorViewController 内部的@IBAction 没有出现在SettingsController 的退出情节提要按钮中。

EditorViewController.swift

class EditorViewController: UIViewController {
    // Snippet
    @IBAction func unwindToEditor(segue: UIStoryboardSegue) {
        // Some logic
    }
}

将 segue 从一个控制器拖放到另一个控制器

尝试将 EditorViewController#unwindToEditor 与 SettingsController 关联

unwindToEditor 方法不可用。

我尝试过但没有帮助的事情:

  • 重启 Xcode
  • 从视图控制器中移除自定义类并重新添加
  • 删除 Xcode 的派生数据
  • 创建自定义 Obj-C 头文件
  • 在我的展开操作中使用了多个方法签名

注意:

我发现控制器的“退出”按钮下的“Presenting Segues”中的可用 IBAction 列表仅从我的一个控制器中提取。跨多个控制器填充此列表可能存在问题?

发现的变通方法

似乎即使我的方法从列表中丢失,如果我去选择确实存在的方法之一并手动更改 unwind segue 的属性检查器中的方法调用,它将调用适当的(这是缺少)方法。

【问题讨论】:

  • 你用的是哪个版本的swift?
  • Swift 3 和 Xcode 8.1
  • swift 3 强调命名参数要么给一个要么忽略@IBAction func unwindToEditor(_ segue: UIStoryboardSegue)
  • 我已经尝试过,不幸的是,填充“Presenting Segues”列表似乎不是问题,因为我仅有的两个现有操作使用以下签名...unwindToSomeView(segue: UIStoryboardSegue)

标签: ios swift xcode


【解决方案1】:

您不需要 unwind segue 方法。

只需这样做:

  1. 在您的EditorViewController 上添加此代码:

    @IBAction func unwindToEditorViewController(segue: UIStoryboardSegue) {}
    
  2. 在您的SettingsController 控件上,从您的按钮拖动到SettingsController 的退出图标,然后从列表中选择unwindoToEditorViewController

瞧!

【讨论】:

  • 这就是问题所在,在步骤 2 中缺少 unwindToEditorViewController
  • 您是否验证过我在#1 上输入的代码是否有任何拼写错误?你把那个代码放在你想要返回的控制器上,对吧?
  • 当你在它的时候,试试我的this other solution
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
相关资源
最近更新 更多