【问题标题】:How come my IBAction isn't connecting?为什么我的 IBAction 没有连接?
【发布时间】:2016-12-17 03:00:13
【问题描述】:

所以在我附加的图片中,我展示了我正在为我的 HOME 按钮创建的子类。我有许多带有 HOME 按钮的 VC,我想将它们连接到此类以使它们都向用户发送 HOME

到目前为止,我制作了我的按钮来参加这门课,如图所示。我的问题是我无法在这里连接我的 IBAction 并且不知道为什么....如果有人能告诉我为什么我现在无法将 IBAction 功能连接到按钮,我将不胜感激......

另一个令人困惑的事情是,虽然我没有给这个按钮堆栈视图中的任何其他按钮一个类,但我实际上能够将这个堆栈视图中的任何其他按钮连接到我的 IBAction...发现奇怪。

class HomeButton: UIButton {
    @IBAction func showHomeVC(sender: AnyObject) {
        var sb: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        var vc: UINavigationController = sb.instantiateViewController(withIdentifier: "HomeNC-ID") as! UINavigationController
        self.present(vc, animated: false, completion: nil)
    }
}

我知道我可以简单地转到每个有 HOME 按钮的 VC,并从每个 VC 中创建一个 IBAction,然后将这段代码粘贴到那里就可以了,但我想以另一种方式做到这一点'不必重复那么多相同的代码......我想知道需要进行哪些更改才能实现这一点。

【问题讨论】:

  • 基础知识:self.presentViewController...
  • 知道为什么当我拖动 ibaction 时它不允许我链接到突出显示的按钮,但它允许我链接到该堆栈视图中的所有其他按钮?
  • 首先,不要用图片来展示你的代码。二、拖动IBAction是什么意思?您是在谈论将代码中的 IBAction 连接到 Interface Builder 中的按钮吗?如果是这样,据我所知,我认为您无法在 Xcode 8 下使用。
  • 使用视图控制器而不是按钮设置 IBActions 和 IBOutlets。
  • 我认为你应该使用标签栏控制器来显示多个视图控制器,一个标签栏按钮单击它将显示相应的按钮。使用标签栏控制器比使用多个按钮要容易得多。

标签: ios swift xcode ibaction


【解决方案1】:

您遇到的错误是因为您使用的 UIButton 类没有显示视图控制器的属性。您应该在 UIViewController 或其他类型之一上呈现它。

它已链接,但您无法使用 self (UIButton) 呈现视图控制器

【讨论】:

  • 你好特雷弗。谢谢.....好吧,我明白了第一句话。然而,我对第二句话感到困惑。您能详细说明一下吗?
  • 当然! UIButton 没有调用 present 的方法,这些是为 UIViewController 或 UITableViewController 等保留的,基本上是为 Views 使用的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2019-07-20
相关资源
最近更新 更多