如何在Cocoa中为用户选择实现基于缩略图的视图?

时间:2009-12-04 21:54:49

标签: cocoa user-interface nscollectionview ikimagebrowserview

我认为这是一个非常简单的需求,但我不确定如何实施它。

在我的界面中的各个点,要求用户选择一些相当可视的内容(例如选择页面布局或颜色选项。)这些选择是从预定义的选项集中进行的。通常你会使用NSPopUpButton,或者可能是NSTableView,但我希望用户能看到每个选择选项的缩略图。这些缩略图也应该是一个不错的尺寸 - 至少100x100像素。每个缩略图还应附有文本标签。一次只允许一个选择。

Apple在iWeb中实现了类似的东西:

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

当然,你习惯用小图标看到这样的东西:

xcode

我认为NSCollectionView是开始的地方,但我只看到过在更复杂的情况下使用它(例如:显示目录的内容,支持拖放等)因此,我发现的大多数代码都比较复杂。

是否有更简单的解决方案可以使用静态预定义数据填充此视图,并且只允许简单选择?换句话说,我正在寻找弹出按钮的功能,但不同的用户界面。

更新:解决方案

我按照建议使用了IKImageBrowser。 This tutorial非常有帮助。在IB中:我在界面中创建了一个IKImageBrowser,将其包装在滚动视图中,并使其成为浏览器对象的数据源。在代码中:在我的控制器中实现数据源协议,如教程所解释,将allowsMultipleSelection和allowsEmptySelection设置为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 个答案:

答案 0 :(得分:5)

你想要IKImageBrowserView。

相关问题