Синтаксическая ошибка: IBOutletCollection - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь объявить 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 Ответ

1 голос
/ 19 марта 2012

Я бы рекомендовал вместо этого использовать IBAction:

-(IBAction)button_Clicked:(id)sender;

Причина в том, что нажатая кнопка является «отправителем» события нажатия. Таким образом, вы всегда будете знать, какая кнопка была нажата. Если вы хотите сделать его еще более узнаваемым, вы можете установить свойство «Tag» для кнопок, чтобы ваш файл реализации выглядел так:

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

Вы можете назначить любое количество элементов управления для использования действия. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...