2010-05-11 2 views
0

Я ищу способ получить доступ к пользовательским настройкам (предположим, NSUserDefaults?) Через действие кнопки. Позвольте мне вернуться и объяснить. Теперь у меня есть 2 TextFields ярлык и кнопка. Пользователь будет вводить измерения в 2 TextFields. Когда они нажимают кнопку, на этикетке отображается объем измеряемого объекта в галлонах. Эта часть прекрасно работает.Получить настройки с помощью действия кнопки

Затем я хотел дать пользователю варианты вывода тома в литрах вместо галлонов. Я также хотел бы дать пользователю возможность вводить измерения в сантиметрах. Поэтому я настраиваю «Настройки.Bundle» и настраиваю его с помощью ячеек «Multi Value» (Единицы измерения и объемные единицы). Каждая ячейка Multi Value имеет свой собственный список различных единиц, которые пользователь может выбрать.

Моя основная проблема: я не знаю, как получить доступ к этим настройкам с помощью действия кнопки. Возможно, я думаю об этом неправильно, но то, что я ищу, - это что-то типа;

Button Action 
    If settings key = 0 
    Then do the math in Inches, Display in Gallons 
    If settings key = 1 
    Then do the math in Centimeters, Display in Gallons 
    If settings key = 2 
    Then do the math in Inches, Display in Liters 
    If settings key = 3 
    Then do the math in Centimeters, Display in Liters 
Etc... 

Возможно ли это? Я думаю об этом не так? Каков наилучший способ сделать это?

ответ

1

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

Для отображения и принятия значений в текстовых полях необходимо использовать NSValueTransformer. Подкласс NSValueTransformer позволяет отображать преобразованную версию значения и, при необходимости, преобразовывать значение на входе. Поэтому, если ваша модель хранит значения в сантиметрах, вы должны использовать NSValueTransformer, который преобразует сантиметры в дюймы и в свой метод -reverseTransformValue:, преобразует дюймы в сантиметры. Таким образом, когда пользователь вводит значение в дюймах, значение сохраняется в вашей модели в сантиметрах.

В вашем случае вашему NSValueTransformer необходимо будет использовать текущие настройки единиц, которые были сохранены в NSUserDefaults, чтобы изменить способ его преобразования.

Смежные вопросы