UICollectionview 不通过 selectItem 功能 IOS 滚动到项目

Posted

技术标签:

【中文标题】UICollectionview 不通过 selectItem 功能 IOS 滚动到项目【英文标题】:UICollectionview not scroll to item by selectItem function IOS 【发布时间】:2018-05-01 14:00:19 【问题描述】:

collectionView这个功能无法滚动到Item

collectionView.selectItem(at: IndexPath(row: 10 , section: 0), animated: true, scrollPosition: UICollectionViewScrollPosition.centeredHorizontally) 

这个 CollectionView 是水平的

【问题讨论】:

集合视图的框架是否正确或大于容器(例如手机屏幕) 它在一个scrollView的UIview里面,我的意思是UIScrollView有UIView,而UIView里面是UIcollectionView,我把截图发给你 如果你向左/向右滑动可以到达集合视图的开头和结尾 是的,我可以,但是通过代码无法滚动到选定的项目,我不知道为什么会发生这种情况:( 试试其他选项:UICollectionViewScrollPosition,看看有没有区别 【参考方案1】:

您当前只是在 indexPath 处选择集合视图项目,这不会滚动到项目。 您需要在所选项目的位置滚动。添加以下滚动方法:

collectionView.selectItem(at: IndexPath(row: 10 , section: 0), animated: true, scrollPosition: UICollectionViewScrollPosition.centeredHorizontally)
collectionView.scrollToItem(at: IndexPath(row: 10 , section: 0), at: .centeredHorizontally, animated: true)

【讨论】:

我也做了这个功能,但还不行:( - 我想重新布局 ViewController 可能我在框架中犯了错误,但我不知道为什么会出现这个问题 您是否以编程方式创建了collectionView 不,我在 StoryBoard 中创建的,我的 ControllerView 有 3 个 UICollectionView @omidshojaeyan,那么,您正在为哪个集合视图滚动项目位置?你在哪里写上面的代码? 我都是在ViewController中写的。此链接在录制的短屏幕上显示我的问题,链接:sendvid.com/tu5ol63h【参考方案2】:

谢谢大家。我用这段代码解决了。我的错误代码是 self.categoryItemsCollection.selectItem(at: IndexPath(row: indexPath.section, section: 0), animated: true, scrollPosition: UICollectionViewScrollPosition.centeredHorizontally) 只需将 scrollPosition 参数更改为 .centeredHorizo​​ntally self.categoryItemsCollection.selectItem(at: IndexPath(row: indexPath.section, section: 0), animated: true, scrollPosition: .centeredHorizontally)

【讨论】:

不是预期的答案,但是当我在垂直滚动时设置选定的索引时,我的收藏视图不滚动,设置 scrollPosition: .centeredHorizo​​ntally 取消滚动。

以上是关于UICollectionview 不通过 selectItem 功能 IOS 滚动到项目的主要内容,如果未能解决你的问题,请参考以下文章

通过捏合手势缩放 UICollectionView

无法通过移动它们来重新排列 UICollectionView 中的单元格?

UICollectionView 滚动后不删除旧单元格

iOS:`UICollectionview`,如何通过它的`indexPath`得到一个单元格的`contentoffset`

UICollectionView 单元格的自定义委托 - 自定义按钮不起作用

如何使用 UICollectionView 创建此 UI,以便内容不受单元格边界的限制