3

我以编程方式在我的 NSCollectionView 中选择一个项目。该项目已按预期选择,但视图不会自动滚动到该项目。

[collectionView setSelectionIndexes:[NSIndexSet indexSetWithIndex:compt]];

如何滚动到所选项目?

4

5 回答 5

6

在这里找到答案NSScrollView:确保框架可见

这段代码对我有用:

NSRect selectionRect = [self.collectionView frameForItemAtIndex:[[self.collectionView selectionIndexes] firstIndex]];
[self.collectionView scrollRectToVisible:selectionRect];
于 2013-09-21T14:20:47.207 回答
3

由于新的 NSCollectionView 中的 OS X 10.11,您应该改用:

[self.collectionView scrollToItemsAtIndexPaths:[self.collectionView selectionIndexPaths] scrollPosition:NSCollectionViewScrollPositionCenteredHorizontally];
于 2016-02-10T10:09:49.680 回答
2

测试:Swift 4.2。Xcode 10.2。macOS 10.14.5 测试版

if  let indexPath = indexPaths.first {
            if #available(OSX 10.12, *) {
                NSAnimationContext.runAnimationGroup { (context) in
                    context.duration = 0.8
                    context.allowsImplicitAnimation = true
                    collectionView.scrollToItems(at: [indexPath], scrollPosition: NSCollectionView.ScrollPosition.bottom)
                }
            } else {
                collectionView.scrollToItems(at: [indexPath], scrollPosition: NSCollectionView.ScrollPosition.bottom)
            }
        }
于 2019-04-09T08:35:40.567 回答
0

让 scrollPositionX: CGFloat = videoThumbCollectionView.visibleRect.origin.x + 150.0 videoThumbCollectionView.scroll(NSPoint(x: scrollPositionX, y: videoThumbCollectionView.visibleRect.origin.y))

于 2017-09-21T11:01:28.030 回答
0

对于斯威夫特 4

collectionView.scrollToItems(at: [collectionView.selectionIndexPaths.first!], scrollPosition: NSCollectionView.ScrollPosition.centeredHorizontally)
于 2018-08-22T08:46:37.020 回答