2017-03-05 66 views
1

我尝试滚动到我的parameterCollectionView中新插入的项目(这里称为“Wert 12”)。但不知何故,滚动位置只是忽略了最后一项。使用NSCollectionViewScrollPosition.trailingEdge应显示最后一项,但不显示。NSCollectionView滚动不正常

滚动以便选定项目的边界框的边缘与集合视图的边界的后边缘相邻。

我的代码:

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) 

所以这两个代码片段将产生相同的行为集合视图:最后一项(“WERT 12”)不显示!

enter image description here

为什么这么NSCollectionView淫荡给我所有的时间???

+0

尝试NSCollectionViewScrollPosition.right,看看这是否工作。 – Alan

+0

不!我尝试了一切。这个问题与其他方面有关。不管怎么说,还是要谢谢你! – JFS

回答

1

我会认为在NSCollectionView scrollToItems(at :)方法中存在一个错误。有时NSCollectionView会忽略它需要滚动的事实,即使上述方法被调用。在这种情况下,可能会“滚动”的项目不在NSCollectionView的可见框架之外。

因此,相应的NSCollectionViewItems不能被例如该项目的调用(at :)方法。在这些情况下,item(at :)将返回nil而不是有效的项目引用。