Подтвердить что ты не робот

NSTableView с пользовательскими ячейками

Кажется, я долго искал и не нашел большого, легкого ответа на мою проблему.

Я использую XCode с Cocoa/ObjC и пытаюсь создать NSTableView, который будет загружать значения из NSDictionary/Array в разные секции ячейки.

Например, я пытаюсь получить NSImage, NSTextField и другие элементы в пользовательскую ячейку (вместе с фоновым изображением). Однако я не могу найти простой ответ на вопрос о том, как создать это.

Я уже некоторое время кодирую iPhone с UITableViews и не могу найти аналогичный способ с NSTableViews.

Любая помощь будет действительно замечательной!

Спасибо

Доминик

4b9b3361

Ответ 1

NSTableView имеет -tableView:dataCellForTableColumn:row:. Просто создайте подкласс NSCell в своем делетете и верните его, если вам нужна настройка для этой строки. Если вы используете свою собственную ячейку для каждой строки в представлении таблицы, вы также можете просто использовать IB для установки пользовательского класса ячеек.

Вид таблицы скопирует ячейку по мере необходимости, поэтому вы можете сохранить ячейку в качестве переменной экземпляра, если она будет более эффективной. Методы источника данных или привязки в представлении таблицы работают так, как обычно, только вы вернете свой заполненный словарь вместо одной строки или числа. Вы также можете передать пользовательский объект модели непосредственно в tableview, хотя вам придется сделать его скопированным или переопределить setObjectValue: в своей ячейке, чтобы обернуть его в NSValue.

Если он подклассифицирует NSCell, что дает вам проблемы, это может быть немного учебным опытом. Начните с -drawWithFrame:inView:, чтобы нарисовать все ваши пользовательские объекты и оттуда оттуда, поскольку вам нужно больше функций.

Ответ 2

Посмотрите видео WWDC 2011 "Просмотр на основе NSTableView от Basic до Advanced" (сеанс 120)

https://developer.apple.com/videos/wwdc/2011/

Это относится к Льву (10.7) и выше.

Ответ 3

Ячейка может удерживать только одно значение объекта за раз. Создайте объект модели с изображением и строкой/атрибутной строкой в ​​качестве свойств и заполните это представление таблицей.

Кроме того, текстовое поле представляет собой представление. Ваша модель не должна знать ничего о своем представлении - что ваша работа взглядов.