我想像推特一样在顶部添加新项目

时间:2018-10-12 19:48:11

标签: ios swift uicollectionview

我有一个collectionView和Im通过Alamofire从api获取数据(我有PHP(Laravel)后端)。我创建了一个类似于twitter的时间轴,当我使用pull刷新刷新其重新加载所有数据时,但是它没有用,因为如果有人通过刷新刷新,它们将每次滚动到顶部。

我希望他们将保持当前滚动位置,并且新项目将添加到顶部,并且当他们向顶部滚动时,他们将继续阅读诸如twitter之类的帖子。希望您能理解我的意思。我对其进行了研究,但找不到类似的问题,因为我不知道该如何描述。

供审核的API:https://gasome.com/api/post

我正在使用KafkaRefresh窗格进行拉动刷新

self.mCollectionView.bindHeadRefreshHandler({
self.id.removeAll(keepingCapacity: false)
self.loadPosts()
}, themeColor: UIColor.blue, refreshStyle: .native)

1 个答案:

答案 0 :(得分:0)

您要使用UICollectionView的performBatchUpdates(_:completion:)函数。有一些关于如何使用它的教程,我建议您也使用像https://github.com/wokalski/Diff.swift这样的差异算法。


阅读您的评论后...这是一个很大的问题。这不是一件简单的事情。每次用户滚动并存储时,您都需要跟踪集合视图的内容偏移量。然后,每当用户将屏幕移到前台时,您都必须下载最新数据,在存储的内容偏移量中添加一个值,以获取新数据已添加到屏幕顶部的点数,然后设置集合查看偏移到该值的内容。

您可能找不到示例代码来演示如何执行此操作,因为这是公司为拥有经验丰富的开发人员设置而付出的高昂代价。