2010-05-11 5 views
0

버튼 동작을 통해 사용자 설정 (NSUserDefaults라고 가정)에 액세스하는 방법을 찾고 있습니다. 백업하고 설명해 드리겠습니다. 지금 당장 가지고있는 것은 2 개의 TextFields 라벨과 버튼입니다. 사용자는 2 개의 TextField에 측정 값을 입력합니다. 그들이 버튼을 누르면 Gallons로 측정 된 물체의 볼륨이 레이블에 표시됩니다. 그 부분은 훌륭하게 작동합니다.버튼 동작을 통해 설정 얻기

그런 다음 갤론 대신 리터 단위로 볼륨을 출력하는 옵션을 사용자에게 제공하고 싶습니다. 또한 사용자에게 센티미터 단위의 측정 값을 입력 할 수있는 옵션을 제공하고자합니다. 그래서 '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

모델에 한 가지 유형의 측정 단위로 값을 저장해야합니다. 당신은 어떤 단위가 사용되고 있는지에 따라 다르게 계산하지 않습니다. 계산은 항상 동일합니다. 다른 유형의 단위를 수락하고 표시하면됩니다.

값을 표시하고 승인하려면 텍스트 필드에 NSValueTransformer을 사용해야합니다. NSValueTransformer의 하위 클래스를 사용하면 값의 변환 된 버전을 표시하고, 선택적으로 입력 값을 역변환 할 수 있습니다. 따라서 모델에 값을 센티미터 단위로 저장하는 경우 센티미터를 인치로 변환하고 -reverseTransformValue: 메서드로 변환하는 NSValueTransformer을 사용하면 인치가 센티미터로 변환됩니다. 따라서 사용자가 인치로 값을 입력하면 모델에 값이 센티미터로 저장됩니다.

귀하의 경우 NSValueTransformer은 단위를 변환하는 방법을 변경하려면 NSUserDefaults에 저장된 현재 단위 설정을 사용해야합니다.