2010-05-11 155 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中的当前单位设置来改变它转换单位的方式。