Как я могу использовать подкласс NSFormatter с NSPopUpButton

StackOverflow https://stackoverflow.com/questions/821363

Вопрос

Я хочу использовать подкласс NSFormatter для форматирования содержимого NSPopUpButton, который я использую для отображения списка вариантов.

По сути, у меня есть NSArray из MyObjects, который связан с NSPopUpButton через привязку значений содержимого, и я хочу отобразить что-то во всплывающем меню, отличное от того, которое возвращает -description. Я действительно не хочу использовать преобразователь, потому что тогда мне нужно создать совершенно новый массив и преобразовать каждый объект в строку перед добавлением его в новый массив.

Использование setFormatter: на самом NSPopUpButton через IB или код не работает, я подозреваю, потому что только элемент форматирования для отдельной ячейки применяется к элементам в списке.

Есть ли простой способ установить форматер для всех ячеек NSPopUpButton? По сути, я хочу просто установить его один раз и забыть об этом.

Это было полезно?

Решение

Обычно вы привязываете всплывающую кнопку к контроллеру массива, содержащему объекты пользовательской модели (через привязку содержимого), и используете привязку значений содержимого, чтобы указать путь к этим объектам со строкой, которую вы хотите использовать в качестве заголовка. .

Насколько я понимаю, у вас есть массив простых строк, которые вы хотите использовать в качестве источника данных, только вы хотите отобразить другую строку для заголовка, верно?

Я не уверен, почему создание преобразователя данных не сработало бы, если бы он был настроен, как указано выше, или, может быть, я что-то неправильно понимаю? У вас будет одна привязка к фактической строке и другая привязка к строке с использованием преобразователя, но оба они будут использовать один и тот же контроллер массива. Другие варианты - создание класса модели для обтекания строк и предоставления свойства заголовка или создание категории на NSString, которая возвращает заголовок для использования в качестве привязки отображаемого значения. Во всех этих случаях вы можете создать свой собственный NSFormatter в коде и использовать его для возврата правильного заголовка строки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top