尝试使用Swift进行无限滚动时陷入无限循环

时间:2018-11-22 00:48:49

标签: ios swift uitableview uiscrollview

对于以下问题,我们将给予极大的帮助。

即使我已经实现了正确的布尔检查(我相信),当我向上滚动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

1 个答案:

答案 0 :(得分:0)

可能是相反的顺序

self.tableView.reloadData() 
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
  self.fetchingMore = false
}