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 确定的那些可能很快会滚动到视图中的单元格。
我有一个使用此委托和数据源设置的 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 确定的那些可能很快会滚动到视图中的单元格。