cocoa - 如何在 Cocoa 中实现基于缩略图的用户选择 View ?

标签 cocoa user-interface nscollectionview ikimagebrowserview

我有一个我认为非常简单的需求,但我不知道如何去实现它。

在我的界面中的各个点上,用户被要求做出一些相当直观的选择(例如选择页面布局或颜色选项。)这些选择是从一组预定义的选项中做出的。通常您会使用 NSPopUpButton,或者 NSTableView,但我希望用户看到每个选择选项的缩略图。这些缩略图也应该有一个合适的尺寸——至少 100x100 像素。每个缩略图还应附有文本标签。一次只允许选择一项。

Apple 在 iWeb 中实现了类似的功能:

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

当然,您已经习惯了看到这样的小图标:

xcode

我认为 NSCollectionView 是一个开始的地方,但我只见过它在更复杂的场景中使用(例如:显示目录的内容,支持拖放等)因此,我发现的大多数代码都相当复杂。

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

更新:解决方案

按照建议,我使用了 IKImageBrowser。 This tutorial非常有帮助。在IB中:我只是在界面中制作了一个IKImageBrowser,将其包装在 ScrollView 中,并将其作为浏览器对象的数据源。在代码中:按照教程中的说明在我的 Controller 中实现数据源协议(protocol),将 allowedMultipleSelection 和 allowedEmptySelection 设置为 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

该教程非常有帮助 - 只需忽略有关添加图像和缩放 slider 等的内容即可。

最佳答案

您需要 IKImageBrowserView。

关于cocoa - 如何在 Cocoa 中实现基于缩略图的用户选择 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1849906/

相关文章:

objective-c - NSCollectionView 不更新数据更改的 subview

cocoa - 将选择器存储为 NSDictionary 中的值

cocoa - 如果其他应用程序打开,如何以编程方式启动我的应用程序?

qt - 使用 Qt 实现切换按钮的最佳方式

cocoa - NSCollectionView 类似延迟加载的行为

objective-c - NSCollectionView 单元格顺序随 View 更改而更改

objective-c - 将 NSWindow 拖动到高于菜单栏的位置

objective-c - CocoaAsyncSocket 的读写委托(delegate)不是触发和代码组织

ios - 如何按顺序为行分配 3 种不同的颜色并反转该顺序

graphics - 在网站上创建图表的好方法是什么?