NSCollectionView, как отправить представленный объект в код по двойному клику?

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

Объекты:

Subitems Array Controller (NSArrayController)
Collection View Item (NSCollectionViewItem)

Управление:

NSCollectionView
NSView (for the item)
   NSImageView
   NSTextField

Я связал NSImageView с элементом представления коллекции с путем ключа модели, как представлено Object.imagePath и преобразователем значения. Это все хорошо работает.

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

Я попытался создать подкласс NSImageView и переопределить событие мыши для события щелчка, которое сработало, но затем я не смог получить доступ отсюда к контексту ManagedObject и выбранному объекту. Я не уверен, как это сделать правильно.

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

1 ответ

Решение

Реализуйте подкласс для вашего элемента представления коллекции, скажем CustomCollectionViewItem и измените класс элемента представления коллекции в IB.

Подкласс вы NSImageView также, в этом классе обрабатывать двойной щелчок. Создайте объект делегата со слабой ссылкой и привяжите этот делегат к вашему CustomCollectionViewItem в IB.

Теперь, когда вы дважды щелкнете, попросите делегата вызвать любой метод вашего CustomCollectionViewItem, и в CustomCollectionViewItem вы получите доступ к представленному объекту.

Теперь проблема состоит в том, как далее передать это фактическому классу контроллера. Вам необходимо снова создать делегат со слабой ссылкой в ​​CustomCollectionViewItem и связать этот делегат с классом Main Controller в IB.

Таким образом, когда CustomCollectionViewItem получает вызов из подкласса NSImageView, затем вызывается метод класса Main Controller и передается представляемый объект.

Другие вопросы по тегам