collectionView cellForItemAtIndexPath 仅调用一次 -swift - 以编程方式

collectionView cellForItemAtIndexPath called only one time -swift - programmatically

我有一个使用此委托和数据源设置的 collectionView:

extension CardView : UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout{


func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    
    let numberOfURLS = cardModel?.urlStrings?.count
    return numberOfURLS!
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    
    let videoCell = collectionView.dequeueReusableCell(withReuseIdentifier: "videoCellIdentifier", for: indexPath)
    videoCell.backgroundColor = UIColor.random()
    return videoCell
    
}


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return self.bounds.size
}

}

问题是 cellForItemAtIndexpath 方法只被调用一次,即使返回的单元格不止一个。

collectionView(_:cellForItemAt:) 仅在单元格出现或即将出现时调用。它不会为所有单元格调用它,而只会为可见单元格(或即将滚动到视图中的单元格)调用它。它以 just-in-time 方式调用。

您还可以开启预取(仅当您在集合视图的“大小检查器”IB 中关闭“估计大小”或手动将流布局的 estimatedItemSize 设置为 .zero 时才有效) ,但这只会使它在获取单元格方面更“急切”一点(获取那些将要滚动到视图中的内容比其他方式更快)。它不会获取所有单元格,但只会获取 OS 确定的那些可能很快会滚动到视图中的单元格。