我刚刚开始学习objective-c,有一件事我不清楚
好的,我在InterFace Builder中有一个按钮。我的.h文件我有代码;
- (void)startButtonPressed:(id)sender;
我如何'link'
'void'
我的按钮来执行操作?
这里的代码不起作用我该怎么做呢?
- (void)startButtonPressed:(id)sender {
//Some stuff in here
}
有谁知道如何解决这个问题?
答案 0 :(得分:2)
将标题文件( .h 文件)中的返回值更改为IBAction
而不是void
。所以,它们看起来像这样:
// .h header file
- (IBAction)startButtonPressed:(id)sender;
// .m implementation file
- (void)startButtonPressed:(id)sender { /* do some work */ }
IBAction
类型与编译器完全相同void
。它由Interface Builder使用,它解析头文件以查看它可以链接的内容。当您将返回类型设置为IBAction
时,您告诉界面构建器可以将操作链接到此方法实现(现在您将能够在IB中绘制连接)。
由于void
和IBAction
相同,您可以在实现文件中使用IBAction
以及返回类型,尽管这种情况并不常见。此外,由于IBAction
和void
相同,因此您只能创建不返回任何值的操作(即,操作方法的返回必须为{{ 1}})。
答案 1 :(得分:1)
接口构建器需要使用IBAction
标记的方法:
- (IBAction)startButtonPressed:(id)sender;
答案 2 :(得分:1)
IBAction
是void
http://www.cocoadev.com/index.pl?IBAction
// from <AppKit/NSNibDeclarations.h>
#ifndef IBAction
#define IBAction void
#endif
这样做,你不会搞砸来自UI和类实现功能的动作。
要创建可与UI连接的功能,您需要将其类型设置为IBAction
// .h
- (IBAction)startButtonPressed:(id)sender;
// .m
- (IBAction)startButtonPressed:(id)sender {
//Some stuff in here
}
是coorect,以及
// .m
- (void)startButtonPressed:(id)sender {
//Some stuff in here
}
实施中的类型,可以直接void