【发布时间】:2017-01-01 16:49:07
【问题描述】:
我正在开发可能有很多帖子,一个 CollectionView 用于帖子,Firebase 作为后端
一切都很好,按预期工作
但问题是使用分页制作 CollectionView(加载更多)
我试过这样做,它有点工作,它只是跳进去,屏幕转到 CollectionView 的顶部,我绝对是,
我会告诉你我做了什么
这是我的 ViewDidAppear :
var numOfItemsToShow = 5 //Five posts
override func viewWillAppear(animated: Bool) {
ref.child("Posts").queryOrderedByChild("count").queryLimitedToLast(numOfItemsToShow).observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
var newPost = [Post]()
for post in snapshot.children {
let lostPost = Post(snapshot: post as! FIRDataSnapshot)
newPost.append(lostPost)
}
self.posts = newPost.reverse()
self.mainTbl.reloadData()
})
}
这是我在 willDisplayCell 中所做的,所以它知道我在帖子的末尾并再发布 5 个帖子:
func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {
if indexPath.item == Int(numOfItems)-1 {
numOfItems+=3
print("update")
ref.child("Posts").queryOrderedByChild("count").queryLimitedToLast(numOfItems).observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
var newPost = [Post]()
for post in snapshot.children {
let lostPost = Post(snapshot: post as! FIRDataSnapshot)
newPost.append(lostPost)
}
self.posts = newPost.reverse()
self.mainTbl.reloadData()
})
}
}
那么我在这里缺少什么?
这是进行分页的正确方法吗?
如果可能的话,给我一个帮助的例子
在此先感谢:)
【问题讨论】:
-
我无法回答您的全部问题,但想提醒您一些您将遇到的问题,即在用户滚动的同时可能已经添加了新帖子。在您在底部重新加载视图后,这将导致重复输入。您可能想要过滤掉您的数组中已经存在的任何帖子。
-
谢谢兄弟,我 1 分钟前解决了这个问题,我想我解决了我自己的问题,我需要做几个测试,我会回答
-
我很好奇你是如何解决我提到的问题的。我也仍然想知道这样的事情的最佳解决方案是什么。很高兴听到您设法解决了自己的问题!
-
检查答案 :) 感谢 Jordi 的帮助
标签: swift firebase pagination uicollectionview firebase-realtime-database