2016-02-04 4 views
3

Я успешно реализовал версию NSCollectionView 10.11 в своем приложении Mac. Он отображает 10 элементов, которые я хочу, но я хочу, чтобы первый элемент автоматически выбирался при запуске приложения.Как программно выбрать объект (и показать этот объект как выбранный) в новом NSCollectionView?

Я пробовал следующее в 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 

с и без аниматора()

Хотя оба они включают путь указателя в выбранные пути индекса, ни один из них не отображает выбранный элемент.

Любые подсказки, в которых я ошибаюсь?

+0

не работает для меня тоже. –

ответ

0

Я предлагаю не использовать положение прокрутки. В 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) 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^