ios - 为什么在swift中为collectionView多次调用willDisplay?
问题描述
我正在使用带有分页的collectionView,但是willDisplay方法被多次调用,我不知道为什么。如果有人有任何想法,请帮助我...................................................... ............
func collectionView(_ collectionView: UICollectionView, willDisplay cell: func scrollViewDidScroll(_ scrollView: UIScrollView) {
guard gridCollectionView!.contentOffset.y >= (gridCollectionView!.contentSize.height - gridCollectionView!.bounds.size.height),
!isRefreshing else { return }
isRefreshing = !isRefreshing
offset += limit
getAllExcrcise(keyword: "", limit: limit, offset: offset)
}
API调用函数
func getAllExcrcise(keyword: String = "", limit: Int = 10, offset: Int = 0, clearAll:Bool = false) {
if clearAll {
self.allExcercise.removeAll()
}
var params = [String: Any]()
params = [
"keyword": keyword,
"limit": limit,
"offset": offset,
"muscle" : bodyPartSelectedArr,
"equipment": categorySelectedArr
]
WebServiceHelper.postWebServiceCall(Constants.baseURL + "getAllExcercises", params: params, isShowLoader: true, success: { (responceObj) in
let statusMsg = GetAllExcerciseLevelOneData(json: responceObj)
if statusMsg.status {
let respArr = responceObj["data"].arrayValue
for item in respArr {
let dataModel = GetAllExcercise(json: item)
for selectedVal in self.selectedItem {
if selectedVal.id == dataModel.id {
dataModel.isCellSelected = true
}
}
self.allExcercise.append(dataModel)
}
self.totalPages = statusMsg.totalPages
} else {
//CommonUtils.showToastMessage(message: statusMsg.message ?? "")
}
self.tableView?.reloadData()
self.gridCollectionView?.reloadData()
}
, failure: { (failure) in
print(failure)
})
}
解决方案
您可以检查将在willDisplay方法中显示的单元格的当前索引,以及它的最后一个数组索引是否比您必须调用getNextPageData。在获取数据时,您可以显示加载指示器,该指示器显示当前正在进行的数据加载。
推荐阅读
- python - 如何在 tkinter 中清除 FigureCanvasTkAgg 画布
- mongodb - Mongo kafka 连接器,解串器问题
- c++ - 如何使用 C++ 更新文件 txt
- visual-studio-2017 - 无法安装 System.Data.OleDb
- php - 如何在 TYPO3 10 中以自定义 extbase 扩展的 flexform 创建文件上传字段?
- java - CellEditor.java 的 getCellEditorValue() 仅在单击单元格时调用
- java - 使用 @Mock 注入模拟不适用于 Java 13
- azure - 启用了虚拟节点和未启用虚拟节点的 AKS 群集
- python - Firestore 错误:这些文档争用过多,请重试
- javascript - 在 react-native 应用程序中从 TMDB API 翻译 gendre_ids