将虚空连接到行动?

时间:2012-01-08 20:41:41

标签: objective-c

我刚刚开始学习objective-c,有一件事我不清楚

好的,我在InterFace Builder中有一个按钮。我的.h文件我有代码;

- (void)startButtonPressed:(id)sender;

我如何'link' 'void'我的按钮来执行操作?

这里的代码不起作用我该怎么做呢?

    - (void)startButtonPressed:(id)sender { 

//Some stuff in here

    }

有谁知道如何解决这个问题?

3 个答案:

答案 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中绘制连接)。

由于voidIBAction相同,您可以在实现文件中使用IBAction以及返回类型,尽管这种情况并不常见。此外,由于IBActionvoid相同,因此您只能创建不返回任何值的操作(即,操作方法的返回必须为{{ 1}})。

答案 1 :(得分:1)

接口构建器需要使用IBAction标记的方法:

- (IBAction)startButtonPressed:(id)sender;

答案 2 :(得分:1)

事实上,

IBActionvoid

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