2016-08-04 7 views
2

Я переношу основанный на ячейках NSTableView, чтобы быть основанным на просмотре. С помощью NSCell, чтобы определить, была ли выделена ячейка (например, для рисования текста в белом вместо черного), я просмотрел свойство NSCell highlighted.Какова версия NSView для выделенного объекта NSCell?

Что такое версия NSView? Я не могу найти ничего подобного в документах.

ответ

0

Самый простой способ сделать это - просто подкласс NSTableCellView. Вся документация говорит, что вы можете создать подкласс либо NSTableCellView или NSView, например, Table View Programming Guide for Mac:

Перетащите объект NSTableCellView (или пользовательский вид) из библиотеки объектов в соответствующей колонке в виде таблицы. ... Как правило, класс представления является подклассом NSTableCellView.

Это не говорит, что это, или почему вы хотите его использовать. Это похоже на NSView, у которого есть NSTextField и NSImageView, и это все, поэтому, если вы не создаете представление, которое имеет их, возникает соблазн игнорировать этот класс и просто подкласс NSView.

Интересно, что если у вас есть NSTextFields в NSTableCellView (даже если вы не используете свойство textField для этого!), Они автоматически используют правильную светло-темную окраску.

В частности, кажется, что свойство NSTableCellView backgroundStyle является причиной изменения фактического значения текста. В документации сказано:

Реализация по умолчанию автоматически переадресует вызовы на все подвидов, которые реализуют setBackgroundStyle: или являются NSControl, которые имеют классы NSCell, которые отвечают setBackgroundStyle :.

NSTextField - это NSControl с NSCell, конечно, поэтому он вызывает это на нем.

Хотя это не точно ясно в документации компании Apple (то, что делает «это» относится?), Кажется, что NSTableView называет -setBackgroundStyle: на любой взгляд, который определяет его. Так что, если вы не хотите, чтобы подклассы NSTableCellView, вы можете в качестве альтернативы просто добавить свойство к вашему собственному NSView:

var backgroundStyle: NSBackgroundStyle 

и ваш код рисования использовать.

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

  • Нет связанных вопросов^_^