1

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

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

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

iweb http://img187.imageshack.us/img187/5744/iweb.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

该教程非常有用——只需忽略有关添加图像和缩放滑块等的内容。

4

1 回答 1

5

你想要 IKImageBrowserView。

于 2009-12-05T00:57:25.853 回答