Ios CollectionView滚动至顶部

Ios CollectionView滚动至顶部,ios,objective-c,xcode,scroll,uicollectionview,Ios,Objective C,Xcode,Scroll,Uicollectionview,我有一个CollectionViewController,里面有10个单元格 但当我运行应用程序时,它会在底部显示单元格,但我想在viewDidLoad的顶部单元格中显示它 我尝试了很多东西,但都不管用 如何修复它?要在collectionView中显示顶部单元格中的数据,可以使用一种方法 [collectionView setScrollsToTop:YES]; 希望它能帮助你。请试试这个 [self.yourcollectionview scrollToItemAtIndexPath:in

我有一个CollectionViewController,里面有10个单元格

但当我运行应用程序时,它会在底部显示单元格,但我想在viewDidLoad的顶部单元格中显示它

我尝试了很多东西,但都不管用


如何修复它?

要在collectionView中显示顶部单元格中的数据,可以使用一种方法

[collectionView setScrollsToTop:YES];
希望它能帮助你。

请试试这个

[self.yourcollectionview scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:NO];

在重新加载集合视图后添加此行

[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:NO];
编辑:

这里只想补充一点,如果collectionView数据源没有元素,或者它是
nil
,那么上面的代码将无法工作,并且可能会使您的应用程序崩溃

写入条件以检查数据源是否可用

if (self.dataArray.count > 0) {
    [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:NO];
}

其中,
dataArray
是您的数据源。

在swift3:after reloadData()中


在重新加载集合视图后添加以下代码:

swift

yourCollectionView.setContentOffset(CGPoint.zero,动画:true)

目标-c


[yourCollectionView setContentOffset:CGPointZero动画:是]

使动画选项为false。可能某些视图动画正在集合视图动画过程中运行

collectionView.scrollToItem(at: indexPath, at: .top, animated: false)
它的工作很好

collectionView.setContentOffset(.zero, animated: false)

Swift 4 Swift 5

事实上,这是我们要做的工作

collectionView.setContentOffset(.zero, animated: false)
但是,如果CollectionView实现了
.contentInset
或外部边距,假设边距顶部和底部设置为
16
,则此代码实际上会返回顶部

collectionView.setContentOffset(CGPoint(x: 0, y: -16), animated: true)

请分享你的代码。我正在使用这个@PoojaSrivastava@KAR请分享您想要获得的collectionviewcell类型的一些代码和屏幕截图?问题是什么?你在Swift工作吗?不,目标c@请在此处添加此行@莫妮卡patel@KAR:在
[self.collectionview reloaddata]之后添加此行@KAR:请投票表决我的答案。如果我的回答对你有用,请把这个问题投上一票,这样对别人会有帮助@莫妮卡·帕特尔诺。视图在我将其旋转180度之前工作正常。然后从底部显示细胞。我翻转视图以将动画效果更改为相反@莫妮卡·帕特利夫:如果你觉得这个问题会对其他人有所帮助,而不是对这个问题投赞成票@AISHAW也与Swift 4+合作
collectionView.setContentOffset(CGPoint(x: 0, y: -16), animated: true)