Привязка NSPopUpButton к NSArray - PullRequest
       5

Привязка NSPopUpButton к NSArray

0 голосов
/ 30 сентября 2011

Я немного растерялся с привязками на NSPopUpButton. У меня есть собственный класс, который содержит массив элементов, которые я хотел бы отобразить во всплывающем окне. Эти элементы являются подклассами NSManagedObject с, и они содержатся в NSArray. Я не хочу использовать NSArrayController, поскольку у меня было много проблем с программным изменением выбора, и это похоже на загромождение реализации.

Проблема в том, что я просто не знаю, как правильно привязать массив к всплывающему окну. Все, что мне удалось сделать, это перечислить элементы массива во всплывающем меню, но заголовки являются основными URI данных. Я думаю, что мог бы использовать метод description для изменения заголовка, но это не очень рекомендуется.

Есть идеи, как правильно связать NSArray с NSPopUpButton?

1 Ответ

0 голосов
/ 30 сентября 2011

Я думаю, что решил это. Я просто создал эти привязки для NSPopUpButton:

  1. «Содержимое» для свойства items (типа NSArray*)

  2. «Выбранный объект» до selectedItem (типа Item*)

  3. Наконец "Значения содержимого" до items.name

Для третьего связывания я реализовал valueForKeyPath:

- (id)valueForKeyPath:(NSString *)keyPath
{
    NSArray *components = [keyPath componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"."]];
    if ([components count] == 2 && [components objectAtIndex:0] == @"items")
    {
        return [self.items valueForKey:[components objectAtIndex:1]];
    }
    return [super valueForKeyPath:keyPath];
}

Третья привязка могла бы быть также отдельным массивом для заголовков, но я гораздо более гибок.

...