Создание пользовательского средства форматирования
Можно создать пользовательские подклассы NSFormatter
отформатировать представления данных кроме дат и чисел.
Разделять на подклассы NSFormatter
, необходимо, по крайней мере, переопределить эти методы:
В первом методе Вы преобразовываете объект ячейки в строковое представление; во втором методе Вы преобразовываете строку в объект, связанный с ячейкой.
Можно также переопределить attributedStringForObjectValue:withDefaultAttributes:
преобразовать объект в строку, имеющую атрибуты, связанные с ним. Например, если Вы хотите, чтобы отрицательные финансовые суммы появились в красном, у Вас есть этот возврат метода строка с атрибутом красного текста. В attributedStringForObjectValue:withDefaultAttributes:
получите неприписанную строку путем вызова stringForObjectValue:
и затем примените надлежащие атрибуты к той строке.
Если строка для редактирования должна отличаться от строки для дисплея — например, версия дисплея валютного поля показывает знак доллара, но версия редактирования не делает — реализация editingStringForObjectValue:
в дополнение к stringForObjectValue:
.
В OS X можно отредактировать текстовое содержание ячейки при каждом нажатии клавиши и препятствовать тому, чтобы пользователь ввел использование недопустимых символов isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:
и isPartialStringValid:newEditingString:errorDescription:
. Можно применить это динамическое редактирование к вещам как номера социального страхования; лицо, вводящее данные, вводит номер только один раз, так как средство форматирования автоматически вставляет символы разделителя.