您好我在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时,它会重新使用最初分配给单元格的内存,而这个内存现在是不可见的。但我正在配置这里没有反映的单元格。 任何帮助表示赞赏。
答案 0 :(得分:0)
您可能希望添加一些额外的调试信息来跟踪您正在调用的远程API的数据返回周期,如果内部collectionview数据源委托方法存在延迟并且您没有提供额外的清理在prepareForReuse方法[https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionReusableView_class/#//apple_ref/occ/instm/UICollectionReusableView/prepareForReuse]中调用,即使内部集合视图已被重用于第4个单元格,在新数据设法通过异步调用填充之前,第1单元格加载的信息仍然可见。