Помогите пожалуйста разобраться с привязкой для NSCollectionView

У меня есть собственный NSView (MyView), который отображается с помощью NSViewCollectionItem.

MyView имеет свойство типа MyObject.

Мой основной NSWindowController имеет IBOutlets для NSViewCollection и NSArrayController.

NSArrayController привязан к массиву объектов типа MyObject.

Я хотел бы, чтобы значения из массива были привязаны к пути «myView.myObject».

Я не могу понять, как настроить это в IB. Я не понимаю, какие ключи я должен использовать. Должен ли мой массив быть набором объектов NSDictionary, чтобы я мог иметь ключ с именем «myObject», а не хранить значения напрямую?

Я очень новичок в привязках, так что это немного сложно. Пожалуйста помоги.


person anna    schedule 28.01.2011    source источник


Ответы (2)


Я разобрался. Это должно выглядеть так:

1) NSArrayController:
Привязать к → MyWindowController (владелец файла)
Путь к ключу модели → myArrayWithObjects

2) NSCollectionView:
Привязать к → NSArrayController
Ключ контроллера → аранжированныеобъекты

3) Теперь, чтобы получить это значение из массива в пользовательский NSView, вам нужно переопределить следующий метод в вашем подклассе NSCollectionViewItem:

- (void)setRepresentedObject:(id)object
{
    [super setRepresentedObject:object];

    // e.g. [self.view setMyProperty:object];
}
person anna    schedule 28.01.2011
comment
привет Анна, вы работали с NSCollectionViewItem в Swift? Я не могу найти метод setRepresentedObject , а в документации сказано, что этот метод был перемещен в NSCollectionView, но и там такого метода нет.:/ Может быть, вы сталкивались с этим? - person Dima Deplov; 11.11.2015
comment
Я недавно задавал вопрос, может быть, вы посмотрите. Спасибо. stackoverflow.com/questions/33669886/ - person Dima Deplov; 12.11.2015
comment
разобрался несколько часов назад, спасибо за ответ. И если вы когда-нибудь будете использовать систему привязки swift и os x, используйте динамическую директиву перед переменной, чтобы автоматически обновлять bing! :) - person Dima Deplov; 13.11.2015

Вы можете привязать «myView.myObject» к «representedObject.property» NSCollectionViewItem. Итак, если у вас есть свойство с именем info в вашем аранжированном объекте, вы можете привязать объект к представленному Object.info.

person Alternegro    schedule 31.01.2011
comment
Спасибо. Я делаю это сейчас по другому сценарию. Однако в моем первоначальном вопросе мне нужно было, чтобы сам представленный объект был привязан к свойству, на мой взгляд. - person anna; 02.02.2011