当点击按钮时,IBAction没有被调用

3

好的,我正在使用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的Cocoa中,只有Cocoa Touch(不确定)。如果有人能帮忙,我将非常感激。

更新:我可以确认这个问题只存在于一个项目中。新项目正常工作。


1
你是如何检查它们是否被调用的?你能否创建一个最小化的情况以展示问题,还是只是三个随机按钮? - Chuck
它们没有被调用,因为我在方法中放置了一个NSLog,并且没有任何日志消息。我认为如果我创建一个新项目,问题就会消失,但我希望不必麻烦。换句话说,我认为这只是这个项目的问题。 - thekmc
也许你正在编辑的XIB文件与正在运行的不同。尝试添加一个额外的按钮,然后构建和运行,看看按钮是否存在。如果不存在,请检查你的XIB文件是否是应用程序目标的成员。 - Jon Hess
不行。我添加了一个按钮,在构建时它还在那里。感觉更像是Xcode或IB中的一个错误。 - thekmc
我设法让我的按钮正常工作,通过将它们的代码添加到另一个正在工作的IBAction中。我不认为这是一个答案,但只是告诉你我现在至少让它工作了。 - thekmc
2个回答

1

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

这个签名不起作用:

-(IBAction)myAction;

这个签名 起了 作用:

-(IBAction)myAction:(id)sender;

添加sender参数似乎就解决了问题。


4
给未来的谷歌搜索者,我想补充一下,我遇到了一个IBActions没有被调用的问题。这是因为我的整个视图控制器为空,因为在传递给window.beginSheet之后,我没有将它存储在属性中。 - August Lilleaas
我确实可以确认@AugustLilleaas上面的建议也为我解决了这个问题!谢谢! - cdf1982
1
感谢 @August Lilleaas .. 这对我来说是个解决方案! - Ahmed M. Hassan

1
你尝试过从模拟器/设备卸载您的应用程序并进行全新构建和运行吗?我遇到了同样的问题,但这个方法对我很有效。

除了它是一个Mac应用程序,所以没有模拟器。没关系,我已经重新开始整个项目了。它需要进行重大改写。 - thekmc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接