使用NSCollectionView访问类中的NSCollectionViewItem出口

时间:2017-10-01 02:41:50

标签: swift xcode macos

编辑:通过将单元格转换为DCartCollectionCell来修复此问题。

let image = array[indexPath.item]
        if let item = self.collectionView.makeItem(withIdentifier: "DCartCollectionCell", for: indexPath) as? DCartCollectionCell {
            item.imgView.image = photo
            return item
        }

我有一个名为DCartCollectionCell的自定义NSCollectionViewItem。在这里,我有一个名为imgView的图像视图。

CartCollectionCell.xib

然后在CartViewController类的NSCollectionView中加载这个单元格,我这样做:

let item = NSNib(nibNamed: "DCartCollectionCell", bundle: nil)
    collectionView.register(item, forItemWithIdentifier: "DCartCollectionCell")

集合视图显示带有图像视图,步进器,按钮等的自定义单元格,但我无法在设置单元格的方法中访问自定义单元格类中的任何插座:

func collectionView(_ collectionView: NSCollectionView,
                        itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
        let item = collectionView.makeItem(withIdentifier: "DCartCollectionCell", for:indexPath)
        item.imgView... (not available)
        return item
    }

我想做这样的事情,将数组中的照片放入单元格的图像视图中:

item.imgView.image = cartArray[indexPath.item]

我可以使用它将照片放在图像视图中,但我不能在单元格类中使用imageView来操作照片(我使用下拉列表裁剪它):

item.imageView!.image = cartArray[indexPath.item]

如何将数组中的照片放入imgView?

我的CollectionViewItem有DCartCollectionCell作为它的类。 DCartCollectionCell class

2 个答案:

答案 0 :(得分:1)

通过将单元格转换为DCartCollectionCell来修复此问题。

let image = array[indexPath.item]
        if let item = self.collectionView.makeItem(withIdentifier: "DCartCollectionCell", for: indexPath) as? DCartCollectionCell {
            item.imgView.image = photo
            return item
        }

答案 1 :(得分:0)

func collectionView(_ itemForRepresentedObjectAtcollectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
    let item = collectionView.makeItem(withIdentifier: "DCartCollectionCell", for: indexPath)
    guard let collectionViewItem = item as? CollectionViewItem else { return item }

    collectionViewItem.imgView.image = ...
    return item
}
  1. Collection View ItemObject Library拖放到中间窗格上。
  2. 选择集合视图项。在右窗格的身份检查器下,将类设置为DCartCollectionCell。
  3. 然后在视图控制器中访问集合视图委托,如上所示。