语法错误:IBOutletCollection

时间:2012-03-19 13:25:20

标签: objective-c macos cocoa

我想宣布一个IBOutletCollection。 我想要做的是以一种我不需要为每个按钮声明它们的方式来管理多个按钮。

#import <Foundation/Foundation.h>

@interface WindowManager : NSObject 
{
    @private
    IBOutlet NSTextField* textField;
    IBOutletCollection (NSButton) NSArray* buttonsArray;
}

@property (nonatomic , retain) IBOutletCollection (NSButton) NSArray *buttonsArray;

- (void) awakeFromNib;

@end

我收到这些错误:

type name requires a specifier or qualifier

expected ; at end of declaration

我不明白原因。 我希望有这种情况:当加载.xib文件时,我在NSArray中有所有按钮,以便我能够管理它们。每次按下按钮我想知道按下了哪个按钮。 这有可能吗?问题是我只找到iPhone指南,我在iPhone指南上找到了类似于这个代码的例子,说这件事有效。

1 个答案:

答案 0 :(得分:1)

我建议改用IBAction:

-(IBAction)button_Clicked:(id)sender;

原因是按下的按钮是按下事件的“发送者”。这样,您将始终知道实际按下了什么按钮。如果您想使其更具可识别性,可以为按钮设置“Tag”属性,以便您的实现文件如下所示:

-(IBAction)button_Clicked:(id)sender {
    switch([sender tag]) {
        case 1:
            // do stuff
            break;
        //etc.....
        default:
            break;
    }
}

您可以指定任意数量的控件来使用该操作。我希望这会有所帮助。