Swift中的ASCollectionView和ASCellNode

时间:2016-01-05 07:17:09

标签: ios xcode swift asyncdisplaykit

我正在尝试使用AsyncDisplayKit将图像加载到我的应用中。我在viewDidLoad中创建我的集合视图作为ASCollectionView,如此:

    let layout = UICollectionViewFlowLayout()
    layout.itemSize = CGSize(width: 90, height: 90)
    let collection = ASCollectionView(frame: view.frame, collectionViewLayout: layout)

    collection.asyncDataSource = self
    collection.asyncDelegate = self
    collection.registerClass(cell1.self, forCellWithReuseIdentifier: "cell1")
    self.view.layer.addSublayer(collection.layer)

这是我的nodeForItemAtIndexPath:

func collectionView(collectionView: ASCollectionView, nodeForItemAtIndexPath indexPath: 
NSIndexPath) -> ASCellNode {

   let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell1", 
   forIndexPath: indexPath) as! cell1

    return cell
}

nodeForItemAtindexPath是cellForItemAtIndexPath的AsyncDisplayKit版本。它必须与ASCollectionView一起使用。

问题是方法“collecitonView.dequeueRreusableCellWithReuseIdentifier”返回一个UICollecitonViewCell。我的手机不是那个,它是一个ASCellNode。所以我得到一个错误:“从UICollectionViewCell转换为不相关的类型ASNodeCell总是失败”。

我在这一行也遇到错误:

  collection.registerClass(cell1.self, forCellWithReuseIdentifier: "cell1")

错误显示“尝试注册不是UICollectionViewCell的子类的单元类。”

还有其他方法可以解决这个问题吗?我几乎到处都搜索过,但是关于asyncdisplaykit的Swift(或者obj c)中可用的资源非常少,我找不到使用ASCollectionView的单个示例项目。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用AsyncDisplayKit,无需使用ASCollectionNode/View

注册单元类

nodeForItemAtIndexPath中,您需要每次都实例化一个新的单元节点,而不是将单元格出列。

func collectionView(collectionView: ASCollectionView, nodeForItemAtIndexPath indexPath: NSIndexPath) -> ASCellNode {

    let node = ASCellNode()

    return node
}

AsyncDisplayKit github项目有更多如何实现此

的示例