Вставка изображения в NSTableView с использованием привязок
У меня есть NSTableView, связанный с NSArrayController с двумя столбцами. Один столбец привязан к упорядоченным объектам контроллера массива и отображает строку.
Я хотел бы отобразить изображение в другом столбце, но я просто не могу заставить его работать. Я перетащил NSImageCell в столбец и установил изображение вручную, но оно не будет отображаться во время выполнения. Я дважды проверил, и изображение находится в моей директории ресурсов.
Я что-то пропустил? Что еще я должен сделать, чтобы это изображение появилось?
1 ответ
То есть вы хотите, чтобы одно и то же изображение появлялось в каждой строке? Вот почему вы устанавливаете это "вручную"? Для этого вы можете смешивать методы NSTableViewDataSource с привязками. Идея в том, что ваш строковый столбец будет связан как обычно, но ваш столбец изображения не будет связан. У него есть свой идентификатор (например, "imageColumn"). Затем вы используете numberOfRowsInTableView: и tableView:objectValueForTableColumn:row: для предоставления счетчика объектов контроллера массива (чтобы у него было правильное количество строк) и просто всегда возвращаете ваше статическое изображение, когда оно запрашивает значение для правого столбца (проверка идентификатора для вашего "imageColumn"), возвращая ноль в противном случае.
Если изображение не является статичным (то есть вы хотите использовать его в качестве какого-либо индикатора), вы можете использовать вышеуказанный метод (вернуть некоторое изображение на основе некоторого значения) ИЛИ привязки. Чтобы использовать привязки, вы можете добавить свойство к любому классу, который содержит ваш контроллер массива, например "status" (число). Затем вы будете использовать пользовательский NSValueTransformer, который преобразует номер статуса в соответствующее изображение. Ваш столбец будет связан с контроллером массива layoutObjects.status, используя преобразователь значений (инструкции по использованию см. В NSValueTransformer - вы должны зарегистрировать его, а затем использовать его имя). Результатом является изображение в вашем столбце, которое соответствует определенному статусу.