代码之家  ›  专栏  ›  技术社区  ›  Ellie P.

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

  •  1
  • Ellie P.  · 技术社区  · 15 年前

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

    在我的界面中的不同点上,要求用户对一些相当直观的内容进行选择(例如为页面选择布局或颜色选项)。这些选择是从一组预定义的选项中进行的。通常,您会使用一个nspopup按钮,或者一个i nstableview,但是我希望用户看到每个选择选项的缩略图。这些缩略图也应该是一个合适的尺寸——至少100x100像素。每个缩略图还应附带一个文本标签。一次只允许选择一个。

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

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

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

    xcode http://img690.imageshack.us/img690/7851/ixcode.jpg

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

    是否有一个简单的解决方案用静态的、预先定义的数据填充这个视图,并且只允许简单的选择?换句话说,我在寻找一个弹出按钮的功能,但是另一个用户界面。

    更新:解决方案

    我按照建议使用了ikImageBrowser。 This tutorial 很有帮助。在ib中:我刚在界面中创建了一个ikImageBrowser,将其包装在滚动视图中,并使其成为浏览器对象的数据源。在代码中:在我的控制器中实现了数据源协议(如教程所述),将allowmultipleselection和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 回复  |  直到 15 年前
        1
  •  5
  •   Mike Abdullah    15 年前

    你想要ikImagebrowserview。