Изменение ячейки для управления
Поскольку NSControl использует объекты, полученные из класса NSCell для реализации большей части его функциональности, можно обычно реализовывать уникальное устройство пользовательского интерфейса путем создания подкласса NSCell, а не NSControl. Как пример, скажем, Вы хотите, чтобы NSSliders всего Вашего приложения имел тип ячейки кроме универсального NSSliderCell. Во-первых, Вы создаете подкласс NSCell, NSActionCell или NSSliderCell. (Давайте вызовем его MyCellSubclass.) Затем можно просто вызвать NSSlider’s setCellClass
метод класса:
[NSSlider setCellClass:[MyCellSubclass class]]; |
Весь NSSliders, создаваемый после того, будет использовать MyCellSubclass, пока Вы не вызовете setCellClass:
снова.
Если Вы хотите создать универсальный NSSliders (использующие NSSliderCell) в том же приложении как специализированные NSSliders, использующие MyCellSubclass, существует два возможных подхода. Нужно вызвать setCellClass:
как выше каждый раз, когда Вы собираетесь создать пользовательский NSSlider, сбрасывая класс ячейки NSSliderCell впоследствии. Другой подход должен создать пользовательский подкласс NSSlider, автоматически использующего MyCellSubclass, как объяснено в NSControl
ссылка класса.