2010-05-11 127 views
0

我正在尋找一種通過按鈕操作來訪問用戶設置(我假設,NSUserDefaults?)的方法。讓我備份並解釋。我現在所擁有的是2個TextFields一個標籤和一個按鈕。用戶將在2個TextFields中輸入測量值。當他們按下按鈕時,標籤以加侖顯示被測物體的體積。這部分工作很好。通過按鈕動作獲取設置

然後我想讓用戶選擇輸出以升爲單位的音量而不是加侖。我還想給用戶選擇以釐米數輸入測量值。所以我設置了一個'Settings.Bundle',並配置了2個'多值'單元(測量單位和體積單位)。每個多值單元格都有自己的不同單元列表,供用戶從中選擇。

我的主要問題是我不知道如何通過按鈕操作訪問這些設置。我可能會想到這個錯誤,但是我正在尋找的是類似的東西;

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

在您的模型中,您應該將值存儲在一種類型的測量單位中。根據所使用的單位不同,「不計算數學」的計算總是相同的。你只需要接受並顯示不同類型的單位。

爲了顯示和接受這些值,您的文本字段應使用NSValueTransformerNSValueTransformer的子類允許您顯示值的轉換版本,並且可以選擇反向轉換輸入值。因此,如果您的模型以釐米爲單位存儲值,則可以使用將釐米轉換爲英寸的NSValueTransformer,並使用其-reverseTransformValue:方法將英寸轉換爲釐米。因此,當用戶輸入英寸的值時,該值以釐米爲單位存儲在模型中。

在你的情況下,你的NSValueTransformer將需要使用已存儲在NSUserDefaults中的當前單位設置來改變它轉換單位的方式。