Изменение ячейки для управления

Поскольку 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 ссылка класса.