使用NSFormatter将字符串更改为用户类型

时间:2011-09-23 21:06:59

标签: macos cocoa nstableview nsnumberformatter

我正在编写一个Mac OS X桌面Cocoa应用程序。我有一些带有一些值的NSTableView,我试图使用自定义的NSNumberFormatter来控制这些值。

我想要的行为:

当用户键入值时,如果他们键入 - ,我希望它的行为类似于计算器上的+/-按钮。因此,如果用户键入“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”。

1 个答案:

答案 0 :(得分:0)

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

我写错了:

partialStringPtr = &validString;

但正确的代码是:

*partialStringPtr = validString;