Вставка изображения в NSTableView с использованием привязок - PullRequest
0 голосов
/ 05 марта 2010

У меня NSTableView привязан к NSArrayController с двумя столбцами. Один столбец привязан к упорядоченным объектам контроллера массива и отображает строку.

Я бы хотел отобразить изображение в другом столбце, но я просто не могу заставить его работать. Я перетащил NSImageCell в столбец и установил изображение вручную, но оно не будет отображаться во время выполнения. Я дважды проверил, и изображение находится в моей директории ресурсов.

Я что-то упустил? Что еще я должен сделать, чтобы это изображение появилось?

1 Ответ

2 голосов
/ 05 марта 2010

То есть вы хотите, чтобы одно и то же изображение появлялось в каждой строке? Вот почему вы устанавливаете это «вручную»? Для этого вы можете смешивать методы NSTableViewDataSource с привязками. Идея в том, что ваш строковый столбец будет связан как обычно, но ваш столбец изображения не будет связан. У него есть установленный идентификатор (например, «imageColumn»). Затем вы используете numberOfRowsInTableView: и tableView: objectValueForTableColumn: row: для предоставления счетчика объектов контроллера массива (чтобы у него было правильное количество строк) и просто всегда возвращаете ваше статическое изображение, когда оно запрашивает значение для правого столбца (проверяя идентификатор для вашего "imageColumn"), возвращая ноль в противном случае.

Если изображение не является статичным (то есть вы хотите использовать его в качестве какого-либо индикатора), вы можете использовать описанный выше метод (вернуть некоторое изображение на основе некоторого значения) ИЛИ привязки. Чтобы использовать привязки, вы можете добавить свойство к любому классу, который содержит ваш контроллер массива, например «status» (число). Затем вы будете использовать пользовательский NSValueTransformer, который преобразует номер статуса в соответствующее изображение. Ваш столбец будет связан с контроллером массива layoutObjects.status, используя преобразователь значений (инструкции по использованию см. В NSValueTransformer - вы должны зарегистрировать его, а затем использовать его имя). Результатом является изображение в вашем столбце, которое соответствует определенному статусу.

...