3

Предполагая, что у меня есть подкласс, представляющий страну, например.Binding Cocoa Значение NSComboBox для объекта

@interface CountryInfo : NSObject 

@property (nonatomic, retain) NSString *countryName; 

Моя модель содержит NSMutableArray из CountryInfo с. Я хочу привязать массив к NSComboBox. В поле со списком должно отображаться название страны и разрешить пользователю выбирать страну.

Итак, я создал мой .xib так:

CountryArrayController (NSArrayController)

ContentArray

  • Привязать к: файла Владелец> Модель Key Path: себя .model.countries

NSComboBox

Содержание

  • Привязать к: CountryArrayController> Контроллер Key: arrangedObjects

Содержание Значения

  • Привязка к: CountryArrayController> Контроллер Key: arrangedObjects> Model Key Path: COUNTRYNAME

До сих пор, так хорошо. Теперь, как связать ЗначениеNSComboBox? В документации к документации указано:

"An NSString or NSNumber that specifies the value of the NSComboBox." 

Что это значит? Отмечу, что я могу привязать это к NSString на моей модели, и он отобразит выбранный countryName. Но я хочу привязать к самому объекту CountyInfo! Прямо или через привязку к выбору на моем контроллере массива: как я могу настроить это?

+0

Вы пробовали использовать NSValueTransformer? – macandyp

+0

Привет @macandyp, да NSValueTransformer действительно сработает, и я могу получить такое же поведение, привязывая к строковому значению и вручную конвертируя в код. Просто кажется странным, что я должен написать дополнительный код для достижения этого и не могу просто привязываться к объекту (к чему я привык). Благодаря! – TheNextman

+1

Я согласен, что это немного странно. Я знаю, что если вы привязываетесь к контенту и не привязываете значения содержимого, он будет ссылаться на описание вашего класса, чтобы заполнить строки для поля со списком. Я не знаю, помогает ли это вам. – macandyp

ответ

10

Я подходил к этому неправильно - правильное управление для использования было NSPopUpButton, а не NSComboBox.

NSComboBox имеет другое поведение, поскольку оно должно поддерживать сценарий, в котором пользователь непосредственно вводит текст. NSPopUpButton предназначен для работы только с предопределенным набором значений и ведет себя так, как ожидалось, при привязке к «выбору».