【问题标题】:IBAction not being called when button is clicked单击按钮时未调用 IBAction
【发布时间】:2011-07-04 17:26:22
【问题描述】:

好的,我正在用 Xcode(版本 3)为 Mac OS X 编写一个应用程序,但我的 IBactions 遇到了问题。我编写它们,并将它们连接到我的按钮,但由于某种原因,当我单击按钮时它们永远不会被调用。我已经仔细检查并三次检查了接口生成器中的连接,但没有运气。如果您对此无能为力,那么也许有人知道如何手动将操作连接到代码中的按钮?我找到了Can you hard code IBActions and IBOutlets, rather than drag them manually in Interface Builder?,但那是针对 iphone 的,它所暗示的似乎不在 Mac OS X 可可中,只有可可触感(虽然不确定)。如果有人可以提供帮助,我将不胜感激。

更新:我可以确认这个问题只存在于一个项目中。新项目运行良好。

【问题讨论】:

  • 你如何检查他们没有被调用?你能创建一个展示问题的最小案例,还是只是三个随机按钮?
  • 它们没有被调用,因为我在方法中放了一个 NSLog,并且没有任何日志消息。我想如果我做一个新项目,问题就会消失,但如果我不必经历这些麻烦,我会喜欢它。所以,换句话说,我认为这只是这个项目。
  • 可能您正在编辑的 XIB 文件与正在运行的文件不同。尝试做一些事情,比如添加一个额外的按钮,然后构建并运行,看看按钮是否在那里。如果不是,请检查您的 XIB 文件是否是应用程序目标的成员。
  • 没有骰子。我添加了一个按钮,当我构建它时它就在那里。感觉更像是 Xcode 或 IB 中的错误。
  • 我设法破解我的按钮来工作,方法是将他们的代码添加到另一个 IBAction,它正在工作。我不认为这是一个答案,只是告诉你我至少现在可以使用它。

标签: cocoa macos interface-builder


【解决方案1】:

您是否尝试过从模拟器/设备上卸载您的应用并重新构建并运行?我遇到了同样的问题,这对我有用。

【讨论】:

  • 除非是mac应用,所以没有模拟器。没关系,反正我已经开始了整个项目。它需要进行重大改写。
【解决方案2】:

我遇到了同样的问题,希望这篇文章能找到答案。经过一些测试,它似乎与 IBAction 的签名有关。

此签名无效:

-(IBAction)myAction;

这个签名确实起作用了:

-(IBAction)myAction:(id)sender;

添加sender 参数似乎可以解决问题。

【讨论】:

  • 对于未来的谷歌员工,我想补充一点,我的 IBActions 没有被调用。这是由于我的整个视图控制器为 nil 引起的,因为在将它传递给 window.beginSheet 之后我没有将它存储在属性中。
  • 我确实可以确认上面的@AugustLilleaas 建议也为我解决了这个问题!谢谢!
  • 谢谢@August Lilleaas .. 这就是我的解决方案!
猜你喜欢
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多