使NSTextField像“微波计时器”一样,存储为NSNumber

时间:2009-03-27 19:41:50

标签: objective-c cocoa macos

我想要完成的是两个方面:

  1. 我希望我的NSTextField充当“微波计时器”,并在输入字符时更新。因此该字段将默认为“00:00”(分钟,秒)。按下1时,该字段看起来像“00:01”。然后按下4并且“00:14”。按下A 2并按“01:42”。
  2. 我想将此作为NSNumber存储在控制器上,作为计时器中的秒数。因此,如果文本字段显示“10:00”,则属性上的值将为600。
  3. 看起来像NSFormatter是个好看的地方,但我的尝试已经充满失败。欢迎任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

a)将计时器属性的值除以分和秒。然后使用带有两个前导零的NSFormatter设置来创建两个数字的字符串(请参阅:How to specify decimal places when formatting NSNumber objects?)。然后使用stringWithFormat:将两个字符串放在冒号的两边。

b)或者只是将四个数字(在您的示例中)中的每个数字分开,并将该数字放在一个字符串中,冒号位于正确的位置。 (所以先是数十分钟,然后是分钟,然后是数十秒,然后是秒)

上述任何一个都可以在NSTextField上的custom NSFormatter subclass集中,或者在您的计时器属性的观察者(使用KVO)调用的视图控制器中的方法中。