0

В некоторые дни я просто хочу прислонить голову к стене. Это особенно актуально, когда речь идет о Cogoa и полной универсальной документации Apple. (Документация Apple на самом деле действительно хорошая, я просто злюсь, что я не могу это понять)Получить выделенный объект в ArrayController из его представленного элемента NSCollectionView

Хорошо, поэтому у меня есть класс «IOWallpaper», в котором хранятся «имя» и «путь» - это подключен к ArrayController

Этот ArrayController затем подключается к NSCollectionView, так что NSCollectionView может быть заполнен NSCollectionViewItem.

Я пытаюсь сделать так, чтобы вы могли выбрать один элемент в NSCollectionView, и когда вы нажимаете на этот элемент, он возвращает его представленный объект IOWallpaper из массива.

Ближайшим образом я должен достичь этого, установив привязку «Индексы выбора» в NSCollectionView, а затем с помощью функции watchValueForKeyPath для ключа «selectionIndexes». Он знает, что я выбрал 1 объект, но я не могу вернуть объект IOWallpaper из объекта NSArrayController, который возвращается с использованием наблюдателя.

Так по существу, я хочу, чтобы преобразовать (идентификатор) параметр «объект» в observeValueForKeyPath обратно к объекту IOWallpaper, так что я могу получить доступ к его членам ?

Это, вероятно, не имеет никакого смысла, но это лучшее, что я могу объяснить.

Благодарим вас за слушание.

ответ

0

Чтобы ответить на вопрос, который вы просили: просто типаж его:

IOWallpaper * myWallpaper = (IOWallpaper*) object[0]; 

Помимо этого, вероятно, вы должны наблюдать NSMenuDidEndTrackingNotification поймать выбора нажмите:

// listen for end track event of our menu (the bottleneck for handling selections) 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(handleEndTrack:) 
              name:NSMenuDidEndTrackingNotification 
              object:[[[self view] enclosingMenuItem] menu]]; 

Это был «заимствован» от GridMenu sample project.

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

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