Как подключить NSPopUpButton с выбором единиц измерения к способу представления NSTextField?
В сущности Core Data у меня есть атрибут "length". Я сохраняю длину в сантиметрах.
Я хочу дать пользователю возможность просматривать и редактировать длину в сантиметрах или дюймах. Поэтому я помещаю NSTextField рядом с кнопкой NSPopUpButton с выбором см и дюймов.
Каков наилучший способ отформатировать NSTextField в соответствии с выбором, выбранным NSPopUpButton? Если разумно для этой проблемы, я бы хотел работать с привязками как можно больше.
Я видел, что есть
- NSNumberFormatters и
- NSValueTransformers
или я мог бы написать собственный код для преобразования единиц?
Какой самый элегантный способ решить эту проблему?
1 ответ
Если вы сохраняете выбор cm/in для пользователя как выбор для каждой сущности с атрибутом на сущности, вы можете сделать это с привязкой значения и преобразователем пользовательского значения с обратным преобразованием в текстовом поле, привязкой выбора cm/in во всплывающем окне и метод класса keyPathsForValuesAffectingLength для сущности.
Если атрибут displayInInches- или как вы его называете - зарегистрирован как keyPath, который влияет на значение длины, преобразователь пользовательского значения будет вызван при переключении всплывающего окна, а текстовое поле обновится.
Если значение cm/in выбрано из пользовательских значений по умолчанию (если изменение не для каждого экземпляра), вы можете привязать всплывающее окно к пользовательским значениям по умолчанию и использовать преобразователь пользовательских значений по умолчанию, но изменение этого всплывающего окна не обновит текстовое поле. Поэтому я думаю, что вам понадобится IBAction, чтобы коснуться длины экземпляра.
Кроме того, вы можете добавить средство форматирования чисел, особенно если ваш преобразователь значений преобразуется в NSNumber, а не NSString, но в основном для локализации и количества значащих цифр, а не для cm/in математики.