我在我的Mac应用程序中成功实现了10.11版本的NSCollectionView.它显示了我想要的10个项目,但我希望在应用程序启动时自动选择第一个项目.
我在viewDidLoad中尝试了以下内容,或者在viewDidAppear函数中尝试了以下内容;
let indexPath = NSIndexPath(forItem: 0, inSection: 0)
var set = Set<NSIndexPath>()
set.insert(indexPath)
collectionView.animator().selectItemsAtIndexPaths(set, scrollPosition: NSCollectionViewScrollPosition.Top)
我已经尝试过使用和不使用动画师的第4行
我也试过以下代替第4行
collectionView.animator().selectionIndexPaths = set
有没有动画师()
虽然它们都在所选索引路径中包含索引路径,但实际上都不会将项目显示为已选中.
我出错的任何线索?
最佳答案 我建议不要使用滚动位置.在Swift 3中,viewDidLoad中的以下代码对我有用
// select first item of collection view
collectionView(collectionView, didSelectItemsAt: [IndexPath(item: 0, section: 0)])
collectionView.selectionIndexPaths.insert(IndexPath(item: 0, section: 0))
第二个代码行是必需的,否则永远不会取消选择该项.
以下是有效的
collectionView.selectItems(at: [IndexPath(item: 0, section: 0)], scrollPosition: NSCollectionViewScrollPosition.top)
对于这两个代码片段,必须有一个带有该函数的NSCollectionViewDelegate
func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) {
// if you are using more than one selected item, code has to be changed
guard let indexPath = indexPaths.first
else { return }
guard let item = collectionView.item(at: indexPath) as? CollectionViewItem
else { return }
item.setHighlight(true)
}