2010-12-09 5 views
1

Я пытаюсь создать пользовательский вид кнопки.Пользовательские NSButton и NSButtonCell

Из того, что я собрал, NSButtonCell делает рисунок, поэтому вместо этого я должен переписывать это.

Но проблема в том, что у моего класса CustomButton есть другие вещи, такие как NSImage, mIsMouseOver и т. Д. В настоящее время чертеж выполняется в классе CustomButton, но я хочу переместить его в ячейку.

Вопрос в том, есть ли в любом случае доступ к изображению в классе customButton из класса customButtonCell, чтобы я мог использовать [image drawInRect:...]?

С уважением, Хан

ответ

1

Метод вашей ячейки drawWithFrame:(NSRect)frame inView:(NSView *)controlView включает ссылку на вывод NSView, из которого вы можете получить доступ к свойствам представления (например, изображения).

+0

Я думаю, что это звучит как план, я дам этот снимок. Все работало нормально, пока я не подкрепил свой взгляд, и все мои пользовательские кнопки не работают, поэтому я должен переписать все, чтобы рисовать в ячейке, а не кнопку :( – han 2010-12-10 01:20:49

1

Обычный способ для хранения данных в подклассе NSCell. Класс базовой ячейки даже имеет свойство изображения (id), поэтому ваш класс кнопки должен вызвать [[self cell] image], когда он запрашивается для изображения.

На самом деле, поскольку вы подклассифицируете NSButton, он содержит все, что вам нужно, просто переопределите методы рисования ячейки. И если вам нужно дополнительное свойство - определите его в ячейке, оберните элемент управления.

Смежные вопросы