Как я получаю representedObject от представления в NSCollectionViewItem?

Исключения связаны для Разработки согласно Контракту.

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

1) весь вход, метод действителен, в этом случае необходимо возвратить пустой указатель, когда объект не найден.

2) только некоторый вход допустим, т.е. то, что приводит к найденному объекту. В этом случае НЕОБХОДИМО предложить второй метод, который позволяет вызывающей стороне определять, будет ли его вход корректен. Например

is_present(key)
find(key) throws Exception

, ЕСЛИ и ТОЛЬКО ЕСЛИ Вы предоставляете оба метода 2-го контракта, Вам разрешают выдать исключение, ничто, найден!

6
задан kperryua 31 July 2009 в 03:23
поделиться

2 ответа

Весьма вероятно, что NSCollectionViewItem не копирует соединения IBOutlet из представлений их элементов в прототип NSCollectionViewItem. Следовательно, элемент равен нулю, поэтому seq также будет равен нулю.

Типичный шаблон для доступа к экземпляру NSCollectionViewItem - это привязка к прототипу. Вы упоминаете, что сделали это и что это работает. Это просто потому, что это типичный поддерживаемый способ сделать это.

Если вам действительно нужно прямое подключение к элементу таким способом, который привязки не могут обеспечить, вам, вероятно, придется настроить его вручную. Один из способов сделать это - переопределить NSCollectionViewItem -copyWithZone: , вызвать super, а затем установить соединение вручную.

1
ответ дан 17 December 2019 в 20:34
поделиться

1) Подкласс NSView, который используется для рендеринга элемента в конце сбора

2) в этом подклассе добавить свойство делегата

3) SUBLCASS NSCOLLIONCEVEWITEM

4) Переопределить SetView: метод. Добавьте строку, чтобы установить свойство делегата представления на экземпляр NScollectionViewItem (I.e. Self).

Теперь в подклассе NSView вы получите доступ к соответствующему элементу NscollectionView через свойство делегата (например, вы можете получить доступ к его представлению).

1
ответ дан 17 December 2019 в 20:34
поделиться