Привязка NSPopUpButton к NSArray

Я хочу заполнить NSPopUpButton массивом NSStrings. Я также хочу иметь возможность установить выбранный элемент в NSPopUpButton, а также получить выбранное значение. Есть ли способ сделать это с помощью привязок? Вот что у меня есть, только содержимое контроллера массива привязано к arragedObjects.

@interface AppDelegate : NSObject <NSApplicationDelegate>
{
    NSMutableArray *myArray;
    IBOutlet NSPopUpButton *myPopUpButton;
    IBOutlet NSArrayController *processArrayController;   
}

@property (assign) IBOutlet NSWindow *window;
@end

@implementation AppDelegate
@synthesize window = _window;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
     NSString *firstObject = @"Lustre";
     NSString *secondObject = @"TwoTone Laser";
     NSString *thirdObject = @"Laser Mark";
     NSString *forthObject = @"Double Lustre";
     NSString *fifthObject = @"CG Ink";

    // Create the array
     myArray = [[NSMutableArray alloc] initWithObjects:firstObject, secondObject,  
     thirdObject, forthObject, fifthObject, nil];

    // Sort the array
    [myArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

    // Set contents of the array controller that is bound to the popup button
    [processArrayController setContent:myArray];

    // Set a selection to an item of the popup button
    [myPopUpButton  selectItemWithTitle: firstObject];  
}
@end

person FlameCoder    schedule 28.11.2012    source источник


Ответы (1)


Настройте ivar в вашем контроллере приложений, чтобы сохранить ваш выбор:

@property (copy) NSString *selection;

И, конечно же, синтезируйте его в файле реализации.

Сделайте эти привязки к вашему экземпляру NSPopUpButton:

Содержание:

Привязать к: контроллеру массива (если вы не дали контроллеру массива другое имя)

Ключ контроллера: аранжированныеобъекты

Значения содержания:

Привязать к: контроллеру массива (если вы не дали контроллеру массива другое имя)

Ключ контроллера: аранжированныеобъекты

Путь к ключу модели: (для строк я всегда использовал «описание»)

Выбранный объект:

Привязать к: делегату приложения (если вы не дали своему делегату приложения другое имя)

Путь к ключу модели: self.selection

Наконец, поскольку ваша всплывающая кнопка теперь привязана к selection, вот как вы настраиваете свой первоначальный выбор:

self.selection = firstObject;

Удачи вам в ваших начинаниях.

person Extra Savoir-Faire    schedule 29.11.2012