作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我做分页。override func scrollViewDidScroll
方法在我滚动时调用了多次。所以 loadMore
方法也被调用了很多次。我只想在滚动时调用一次 loadMore()
方法。
我该如何解决?
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y >= scrollView.contentSize.height / 3 {
loadMore()
}
}
// pagination
func loadMore() {
// if posts on the server are more than shown
if page <= prePage {
// increase page size
page = page + 3
prePage = page
self.posts.removeAll()
self.collectionView.reloadData()
Api.Post.observeTopPosts(page: self.page) { (post) in
self.posts.append(post)
print(post)
self.collectionView.reloadData()
}
}
}
最佳答案
要解决这个问题,您可能需要实现一个 Bool
值,该值将决定是否调用 loadMore
函数。
创建一个 var
来判断你的函数是否被调用:
var hasLoaded = false
然后在您的 scrollViewDidScroll
方法中添加以下内容:
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y >= scrollView.contentSize.height / 3 {
//If we haven't loaded data then call the function
if !hasLoaded{
loadMore()
//Data has been loaded so set hasLoaded to true
hasLoaded = true
}
}
}
假设我已经正确阅读了您的问题,这应该可以解决问题,或者至少让您朝着正确的方向开始......
关于ios - "override func scrollViewDidScroll"多次调用。我只想打电话一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49079752/
我目前在我的 master 分支上。我需要 CSS 方面的帮助,但不幸的是我的网站受身份验证保护。这使得其他人很难来我的站点进行调试。我计划开始一个新的分支,fixing_css,第一次提交删除所有身
我是一名优秀的程序员,十分优秀!