逐个将数据加载到UICollectionView中

时间:2018-10-23 09:23:12

标签: ios uicollectionview

我正在构建一个聊天应用程序,但是收藏夹视图有问题。在我的应用程序中,我只想做类似whatsapp的操作,在开始时,我加载前50条消息,当我们向下滚动时,希望一堆一堆地获取其他消息。但是,当我这样做并调用集合视图的reloadData方法时,它将滚动到顶部消息。而且我不希望他们滚动。你能帮助我吗。请..

我只是想使collectionView类似于whatsapp的聊天视图。即,当用户滚动到旧消息时,加载更多消息。

3 个答案:

答案 0 :(得分:1)

您要的只是将单元格(插入)到收集视图中,而无需重新加载它。

在插入项目时选中appledoc

确定新的indexPaths,然后使用以下内容将其提供给集合视图

yourCollectionView.insertItems(at indexPaths: newIndexPaths)

答案 1 :(得分:1)

到达终点时检测并获取更多数据

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)
    {
    let lastSectionIndex = collectionView.numberOfSections - 1
    let lastRowIndex = collectionView.numberOfItems(inSection: lastSectionIndex) - 1
    if indexPath.section == lastSectionIndex && indexPath.row == lastRowIndex 
    {
        //fetch more items
        //add items to data array
        //Reload collectionview
    }
}

答案 2 :(得分:0)

尝试pagination概念

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
    if indexPath.row + 1 == dataArray.count && dataArray.count < completeData.count {
        fetchMoreData()
    }
    .....
}

func fetchMoreData() {

    //Fetch and add more data to your dataArray.
    //Reload collectionView
}