我是 XCode 新手,仍在学习 XCode(当前使用 Xcode 4.5.2)。
基于 Apple 关于 的教程 IconCollection ,我尝试制作一种缩略图 View 应用程序,其中 ImageMetada 字段存储在数组中作为 CollectionView 数据源。
以下是一些基本信息:
- 1 个 xib 文件 (MainMenu.xib)
- 1 个窗口,主视图上带有 CollectionView 和 TableView。
- 1 个对象 Controller 使用自定义类名称委托(delegate)窗口和应用程序:ThumbsViewController
- 1 个放置在 xib 上(但不在主窗口或其 subview 上)的集合项的自定义 View 由 1 个 ImageView、1 个标签(文本字段)和 2 个按钮组成。该 View 使用自定义类:ThumbViewItem。第一个按钮用于设置日期信息,第二个按钮用于删除它。我的目的是,当我将鼠标放在当前项目上时,仅当在元数据上找不到日期信息时才应启用第一个按钮,仅当在元数据上找到日期信息时才应启用第二个按钮。我已将每个文件的 iboutlet 设置为 ThumbViewItem.h 文件(imgpic、imglabel、imgbtn1 和 imgbtn2)。这个想法可能有点像 Adobe lightroom 4 底部照片集的缩略图。
- NsCollectionViewItem 的 View socket 连接到 ThumbViewItem(4),其 itemPrototype socket 连接到 CollectionView window (2)
- 图像信息数组 (imageInfos),包括 ThumbsViewController.h(3) 上定义的图片和元数据。我计划将此数组用作共享数组,用于 CollectionView 和 TableView
- 数组中存储的数据是imageinfo.h中定义的名为imageinfo的接口(interface)。我在上面放了缩略图和元数据字典。
表格可以正确显示数组中存储的信息,包括文件名、路径和元数据(日期和 GPS 信息)。但 CollectionItem 的自定义 View 不会。 没有图像,没有名字,没有信息。
在调试时,我发现 IBOutlet 中的每个:imgpic、imglabel、imgbtn1 和 imgbtn2 均为 null。
为什么所有 IBOutlet 属性/链接都不起作用?
有什么我忘记了吗?
如何从与集合项关联的自定义 View 中获取存储在 imageinfos 数组中的图像信息以用于自定义绘制目的?
CollectionView ---> 集合项 ---> 自定义 View
例如,在与索引号 4 处的集合项关联的自定义 View 上执行自定义绘制时,我如何获取该索引(数字 4)?
我获取索引的代码是将其 super View 作为collectionview获取,并在 super View 的 subview 上获取其索引,如下所示:
-(NSInteger) getIndexInCollection
{
return [[[self superview] subviews] indexOfObject:self];
}
此代码的问题是有时有效有时无效。
如有任何帮助,我们将不胜感激。谢谢。
最佳答案
阅读有关 NSCollectionview、IconViewPrototype.xib 的文档,注意简单的代码使用了一些绑定(bind),在 Collection.xib 中应该确定如何使用 IconViewPrototype.xib 来显示自定义 View ,并确定如何根据绑定(bind)获取数据源.
关于cocoa - 自定义 "NSView"为 "NSCollectionViewItem": How to get or access collection item or its data from its view to perform a custom draw?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14139401/