在UICollectoinviewCell内的UICollectoinView中异步加载数据

时间:2016-01-19 13:18:43

标签: uicollectionviewcell tvos

您好我在swift tvOS中的UICollectionViewCell中使用UICollectionView,以便它在水平和垂直方向上滚动。 下面是我的Outer Collection视图代码。

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return variableCount
   }
    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        // Each section contains a single `CollectionViewContainerCell`.
        return 1
    }
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        // Dequeue a cell from the collection view.            
        if let cell = collectionView.dequeueReusableCellWithReuseIdentifier(CollectionViewContainerCell.reuseIdentifier, forIndexPath: indexPath) as? CollectionViewContainerCell
        {
            cell.configureWithData("some Parameters to build inner collectionView")
                print("Returning Cell")
                        return cell
        }

        return CollectionViewContainerCell()


    }

方法configureWithData在CollectionViewContainerCell中,我在异步调用API并在dispatch_async中重新加载内部集合视图。

滚动和显示效果很好。当我向下滚动外部集合视图(最初未加载的第4个单元格)时,问题来自于我在第一个单元格中获取相同数据的位置。我可以看到,当我说dequeueReusableCellWithReuseIdentifier时,它会重新使用最初分配给单元格的内存,而这个内存现在是不可见的。但我正在配置这里没有反映的单元格。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可能希望添加一些额外的调试信息来跟踪您正在调用的远程API的数据返回周期,如果内部collectionview数据源委托方法存在延迟并且您没有提供额外的清理在prepareForReuse方法[https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionReusableView_class/#//apple_ref/occ/instm/UICollectionReusableView/prepareForReuse]中调用,即使内部集合视图已被重用于第4个单元格,在新数据设法通过异步调用填充之前,第1单元格加载的信息仍然可见。