我尝试在我的parameterCollectionView
中滚动到新插入的项目(此处称为" Wert 12")。但不知何故,滚动位置只是忽略了最后一项。使用NSCollectionViewScrollPosition.trailingEdge
应显示最后一项但不显示。
滚动以使所选项目的边界框的后缘与集合视图边界的后缘相邻。
我的代码:
parameterCollectionView.reloadData()
let section = 0
let item = parameterCollectionView.numberOfItems(inSection: section) - 1 //<-- last item in collection view
let myIndexPath: Set = [IndexPath(item: item, section: section)]
parameterCollectionView.scrollToItems(at: myIndexPath, scrollPosition: NSCollectionViewScrollPosition.trailingEdge)
有趣的是:在最后一个通道代码之前选择项目时没有任何变化。所以,最后一项被忽略了:
parameterCollectionView.reloadData()
let section = 0
let item = parameterCollectionView.numberOfItems(inSection: section) - 2 // second last item in collection view
let myIndexPath: Set = [IndexPath(item: item, section: section)]
parameterCollectionView.scrollToItems(at: myIndexPath, scrollPosition: NSCollectionViewScrollPosition.trailingEdge)
因此,两个代码片段都会对集合视图产生相同的行为:最后一项(&#34; Wert 12&#34;)未显示!!!
为什么NSCollectionView
一直对我这么讨厌?
答案 0 :(得分:2)
我认为NSCollectionView scrollToItems(at :)方法中存在一个错误。有时NSCollectionView忽略了它需要滚动的事实,即使调用了上述方法。在这种情况下,被“滚入”的项目停留在NSCollectionView的可见框架之外。
因此,不能通过例如检索相应的NSCollectionViewItems。调用项目(at :)方法。在这些情况下,item(at :)将返回nil而不是有效的项目引用。