Как я могу реализовать представление на основе миниатюр для выбора пользователя в Cocoa?

StackOverflow https://stackoverflow.com/questions/1849906

Вопрос

У меня есть, как мне казалось, довольно простая потребность, но я не знаю, как ее реализовать.

В различных точках моего интерфейса пользователю предлагается выбрать что-то довольно визуальное (например, выбрать макет страницы или вариант цвета). Этот выбор делается из заранее определенного набора параметров.Обычно вы используете NSPopUpButton или, может быть, NSTableView, но я бы хотел, чтобы пользователь видел миниатюры каждого варианта выбора.Эти миниатюры также должны быть приличного размера — не менее 100x100 пикселей.Каждая миниатюра также должна сопровождаться текстовой меткой.Одновременно допускается только один выбор.

Apple реализует в iWeb нечто подобное:

iweb http://img187.imageshack.us/img187/5744/iweb.jpg

Вы, конечно, привыкли видеть что-то подобное с маленькими иконками:

xcode

Я думаю, что стоит начать с NSCollectionView, но я когда-либо видел, чтобы это использовалось только в гораздо более сложных сценариях (например:отображение содержимого каталога, поддержка перетаскивания и т. д.) Поэтому большая часть найденного мной кода довольно сложна.

Есть ли более простое решение, чтобы заполнить это представление статическими, заранее определенными данными и просто разрешить простой выбор?Другими словами, я ищу функциональность всплывающей кнопки, но другой пользовательский интерфейс.

Обновлять:решение

Я использовал IKImageBrowser, как было предложено. Этот урок было очень полезно.В ИБ:Я только что создал IKImageBrowser в своем интерфейсе, обернул его в представление прокрутки и сделал источником данных объекта браузера.В коде:реализовал протокол источника данных в моем контроллере, как объясняется в учебнике, установил для разрешенийMultipleSelection и разрешенийEmptySelection значение NO, создал собственный объект изображения, используя представление изображения URL-адреса, точно так, как описано в руководстве.

Затем, чтобы получить выбор, я написал следующий метод, который будет запускаться, когда пользователь нажимает кнопку «ОК»:

NSIndexSet *retval = [imageBrowser selectionIndexes];
NSInteger i = [retval firstIndex];  //the index of the selection. Corresponds to index in my array data source
NSString* path = [[styleViewData objectAtIndex:i] imageRepresentation]; //path to selected image, if you need it

Учебник очень полезен — просто игнорируйте вопросы о добавлении изображений, ползунках масштабирования и тому подобном.

Это было полезно?

Решение

Вам нужен IKImageBrowserView.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top