为什么将显示调用多次在为collectionView在swift?



我正在使用带有分页的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)
})
}

UICollectionView中的每个单元格显示并对用户可见之前调用willDisplay cell:。如果单元格要离开呈现的视图(假设用户滑动到另一个单元格),系统调用didEndDisplaying didEndDisplayingCell:函数。

你可以检查当前索引的单元格将显示在willDisplay方法,如果它的数组的最后一个索引比你必须调用getNextPageData。当数据正在被获取时,你可以显示加载指示器,显示当前正在加载的数据。

最新更新