Получить настройки через действие кнопки - PullRequest
0 голосов
/ 12 мая 2010

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

Тогда я хотел дать пользователю возможность выводить объем в литрах вместо галлонов. Я также хотел бы дать пользователю возможность вводить измерения в сантиметрах. Поэтому я установил «Settings.Bundle» и настроил его на 2 ячейки «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 Ответ

1 голос
/ 12 мая 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...