尝试使用 Swift 实现无限滚动时陷入无限循环
Posted
技术标签:
【中文标题】尝试使用 Swift 实现无限滚动时陷入无限循环【英文标题】:Falling into an infinite loop when trying to implement Infinite Scrolling using Swift 【发布时间】:2018-11-22 00:48:49 【问题描述】:非常感谢您对以下问题的帮助。
即使我已经实现了正确的布尔检查(所以我相信),当我向上滚动 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,它获取更多内容但由于某种原因被无限调用:
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
【问题讨论】:
【参考方案1】:可能是相反的顺序
self.tableView.reloadData()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5)
self.fetchingMore = false
【讨论】:
以上是关于尝试使用 Swift 实现无限滚动时陷入无限循环的主要内容,如果未能解决你的问题,请参考以下文章
为啥当我实现以 2^20 为底的基数排序以对大小为 500 万的数组进行排序时,该程序会陷入无限循环?