对于以下问题,将不胜感激。
即使我已经实现了正确的布尔检查(因此,我相信),当向上滚动tableView时,我的代码也会陷入无限循环...Bool
检查我是否已经获取了更多内容:
var fetchingMore = false
这是我的
scrollViewDidScroll
函数:func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offsetY = scrollView.contentOffset.y
let contentHeight = scrollView.contentSize.height
if offsetY > contentHeight - scrollView.frame.height{
if !fetchingMore{
radius += 5
fetchMoreVenues()
}//end if
}//end if
}//end func
这是我的
fetchMoreVenues
函数,可获取更多内容,但由于某些原因被无限调用:func fetchMoreVenues(){
fetchingMore = true
DataService.run.fetchVenueNearby(deviceLocation: currentLocation, radius: radius) { (venues) in
for venue in venues {
if !self.venueArray.contains(where: { ($0.venueID == venue.venueID) }){
self.venueArray.append(venue)
}
if !self.filteredVenueArray.contains(where: { ($0.venueID == venue.venueID) }){
self.filteredVenueArray.append(venue)
}
}//end for
self.fetchingMore = false
self.tableView.reloadData()
}//end fetchVenueNearby
}//end func
最佳答案
可能是相反的顺序
self.tableView.reloadData()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
self.fetchingMore = false
}
关于ios - 尝试使用Swift进行无限滚动时陷入无限循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53422449/