0

MacOSXデスクトップCocoaアプリを書いています。いくつかの値を持つNSTableViewがあり、カスタムNSNumberFormatterを使用してそれらの値を制御しようとしています。

私の望ましい行動:

ユーザーが値を入力しているときに-と入力すると、電卓の+/-ボタンと同じように動作するようにします。したがって、ユーザーが「500-」と入力した場合、その文字列を自動的に「-500」に置き換えたいと思います。

これで、この状況を処理して目的の置換文字列を返すNSNumberFormatterの動作するサブクラスができました。しかし、NSTableViewに入力すると、ログに「500-」が「-500」に置き換えられていることが示されますが、NSTableViewには「500」のみが表示され、前または後のどちらにも-は表示されません。

NSTableViewが実際に負の数を表示するように、xibまたはNSNumberFormatterサブクラスで行う必要があることはありますか?

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

これをコンソールに記録しています:

proposed string: 500-
replacement string: -500

ただし、NSTableViewのセルには、その後も「500」と表示されます。

4

1 に答える 1

0

私の古い学校のCスキルはただ錆びていて、新しい文字列を正しく戻していないことがわかりました。

私は間違って書いていました:

partialStringPtr = &validString;

しかし、正しいコードは次のとおりです。

*partialStringPtr = validString;
于 2011-09-23T21:56:34.177 に答える