Пользовательские NSButton и NSButtonCell
Я пытаюсь создать собственный вид кнопки.
Из того, что я собрал, NSButtonCell
делает рисунок, поэтому я должен переписать это вместо этого.
Но проблема в том, что мой класс CustomButton имеет другие вещи, такие как NSImage
, mIsMouseOver
и т.д. В настоящее время рисование выполняется в классе CustomButton, но я хочу переместить его в ячейку.
Вопрос в том, могу ли я в любом случае получить доступ к изображению в классе customButton из класса customButtonCell, чтобы я мог использовать [image drawInRect:...]
?
С уважением, Хан
2 ответа
Ваша клетка drawWithFrame:(NSRect)frame inView:(NSView *)controlView
Метод включает ссылку на рисуемый NSView, из которого вы можете получить доступ к свойствам представления (например, к изображению).
Обычный способ - хранить данные в подклассе NSCell. Базовый класс ячеек даже имеет свойство изображения -(id), поэтому ваш класс кнопок должен вызывать [[self cell] image]
когда это запрашивается для изображения.
На самом деле, поскольку вы создаете подкласс NSButton, он содержит все, что вам нужно, просто переопределяет методы рисования ячейки. А если вам нужно дополнительное свойство - определите его в ячейке, поместите в элемент управления.