2011-09-23 25 views
0

我正在编写Mac OS X桌面可可应用程序。我有一个NSTableView有一些值,我试图用一个自定义的NSNumberFormatter来控制这些值。使用NSFormatter将字符串更改为用户类型

我所期望的行为:

作为用户输入的值,如果他们输入 - ,我希望它类似于在一个计算器+/-按钮行为。因此,如果用户键入“500-”,那么我想自动用“-500”替换该字符串。

现在,我有一个NSNumberFormatter的工作子类,它处理这种情况并返回我想要的替换字符串。但是当我输入我的NSTableView时,我的日志显示“500-”正在替换为“-500”,但NSTableView只显示“500”,并且没有在之前或之后显示。

在我的xib或我的NSNumberFormatter子类中需要做什么,以便NSTableView实际显示负数?

- (BOOL) isPartialStringValid:(NSString **)partialStringPtr 
     proposedSelectedRange:(NSRangePointer)proposedSelRangePtr 
       originalString:(NSString *)origString 
     originalSelectedRange:(NSRange)origSelRange 
      errorDescription:(NSString **)error 

正在记录此控制台:

proposed string: 500- 
replacement string: -500 

但在NSTableView的细胞仍显示只是 “500” 之后。

回答

0

事实证明,我的旧学校C技能只是生锈,我没有正确地传回新的字符串。

我被错误地写:

partialStringPtr = &validString; 

但正确的代码是:

*partialStringPtr = validString; 
相关问题