Использование NSFormatter для изменения строки в качестве пользовательских типов - PullRequest
0 голосов
/ 24 сентября 2011

Я пишу настольное приложение 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 голосов
/ 24 сентября 2011

Оказывается, мои старые школьные навыки C просто ржавые, и я неправильно передавал новую строку.

Я неправильно писал:

partialStringPtr = &validString;

Но правильныйкод:

*partialStringPtr = validString;
...