Как я могу реализовать представление на основе миниатюр для выбора пользователя в Какао?
У меня есть то, что я считал довольно простой потребностью, но я не уверен, как это осуществить.
В различных точках моего интерфейса пользователя просят сделать что-то визуальное (например, выбрать макет страницы или цветовой вариант). Эти выборы сделаны из заранее определенного набора параметров. Обычно вы используете NSPopUpButton или, может быть, NSTableView, но я бы хотел, чтобы пользователь видел эскизы каждого варианта выбора. Эти миниатюры тоже должны быть приличного размера - не менее 100x100 пикселей. Каждая миниатюра также должна сопровождаться текстовой меткой. Только один выбор допускается одновременно.
Apple реализует что-то вроде этого в iWeb:
http://img187.imageshack.us/img187/5744/iweb.jpg
Конечно, вы привыкли видеть что-то подобное с маленькими иконками:
http://img690.imageshack.us/img690/7851/ixcode.jpg
Я думаю, что 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
Учебник очень полезен - просто игнорируйте материал о добавлении изображений и ползунков масштабирования и тому подобного.