2017-03-05 63 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而不是有效的項目引用。