Пользовательские 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, он содержит все, что вам нужно, просто переопределяет методы рисования ячейки. А если вам нужно дополнительное свойство - определите его в ячейке, поместите в элемент управления.

Другие вопросы по тегам