UICollectioView:添加单元格

时间:2016-08-11 12:14:03

标签: ios swift uicollectionview uicollectionviewcell uicollectionviewlayout

我创建了循环UICollectionView(因此用户无法滚动到结尾,因为当他滚动到prev行时,我从末尾删除不正确的行以将它们插入到UICollectionView的开头。

在我的UICollectioView中,我总是有11个单元格。 UICollectionViewCell与UICollectionView具有相同的边界。

问题:例如,我将内容滚动到indexPath,行= 2.如果我在开头添加2个单元格并从末尾删除2个单元格,我想看到相同的单元格,但它滚动到第二行(我之前看到的行),但我不希望smth滚动,我想插入2行没有任何动画,所以用户应该看到第4行,但它认为它是第2行)

以下是代码:

let numberOfRowInCollectionView = collectionView_help_getNumberOfRowsInCollectionView()
                collectionViewMain.performBatchUpdates({ [weak self] in

                    if self == nil {
                        return
                    }

                    let currentRowOffset = 2
                    let numberOfRowsToAddFromLeft = currentRowOffset // number of rows we need to add or remove from left
                    var array_indexPathToAdd = [NSIndexPath]()
                    var array_indexPathToRemove = [NSIndexPath]()
                    for i in 0..<numberOfRowsToAddFromLeft {
                            array_indexPathToAdd.append(NSIndexPath(forRow: i, inSection: 0))
                            array_indexPathToRemove.append(NSIndexPath(forRow: numberOfRowInCollectionView - 1 - i, inSection: 0))
                        }

                    self?.collectionViewMain.insertItemsAtIndexPaths(array_indexPathToAdd)
                    self?.collectionViewMain.deleteItemsAtIndexPaths(array_indexPathToRemove)

                    self!.selectedRow += currentRowOffset

                    }, completion: {  (finished) in
                        completionBlock?()
                })

我试图添加:

// select new row
                        let selectedIndexPath = NSIndexPath(forRow: self!.selectedRow, inSection: 0)
                        self!.collectionViewMain.scrollToItemAtIndexPath(selectedIndexPath, atScrollPosition: .CenteredHorizontally, animated: false)

之后它会选择适当的新行(现在它= 4),但它会通过动画来实现,因此用户可以看到smth正在发生。

但我想在开头添加2个单元格,用户不应该看到smth正在发生。

1 个答案:

答案 0 :(得分:0)

我使用此源代码来实现此循环UICollectionView Git

这个想法不是在UICollectionView中使用删除和插入单元格,而是只有额外的0(数组中最后一个对象的数据)和最后一个(数组中有0个对象的数据)行,并设置没有动画的内容偏移。