将事件处理程序添加到cocoa按钮

时间:2012-11-24 17:13:40

标签: objective-c xcode button interface-builder iboutlet

我有一个使用XCode 4构建的非常简单的Mac App(现在只是一个空白表单)。 现在我通过Interface Builder添加了一个按钮,并在AppDelegate中添加了一个方法:

-(IBAction) btnScanClicked
{
    NSLog(@"Hello!");
}

当我启动应用程序时,我收到以下消息:

  

无法将动作btnScanClicked:连接到类的目标   的AppDelegate

这是否意味着我无法向AppDelegate添加任何事件处理程序?我还能把它们放在哪里,我将如何使用Interface Builder进行设置?

1 个答案:

答案 0 :(得分:4)

问题是您尚未正确声明操作方法。将定义替换为:

-(IBAction) btnScanClicked:(id)sender {

注意错误消息如何表明它无法连接到btnScanClicked:结尾处的冒号不是标点符号 - 它表示消息带有参数。

UIKit不同,行动方法需要采用以下形式:

- (void)methodName:(id)sender

IBAction只是解析为void,但它是Interface构建器的一个指示器,它是一个可以通过上下文拖动连接的方法。