Как я могу реализовать представление на основе эскизов для выбора пользователя в Какао? - PullRequest
1 голос
/ 05 декабря 2009

У меня есть то, что я считал довольно простой потребностью, но я не уверен, как это осуществить.

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

Apple реализует что-то вроде этого в iWeb:

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

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

xcode

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

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

Обновление: решение

Я использовал IKImageBrowser, как и предлагалось. Этот урок был очень полезен. В IB: я просто создал IKImageBrowser в своем интерфейсе, обернул его в представление прокрутки и сделал его источником данных объекта браузера. В коде: реализован протокол источника данных в моем контроллере, как объясняется в учебном пособии, для параметра allowMultipleSelection и allowEmptySelection установлено значение 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

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

1 Ответ

5 голосов
/ 05 декабря 2009

Вы хотите IKImageBrowserView.

...