NSCollectionView внутри другого NSCollectionView

У меня есть эти два класса:

@interface Father : NSObject
{
     NSString* name;
     NSArray* listChildren;
}

@property (copy, readwrite) NSString* name;
@property (copy, readwrite) NSArray* listChildren;

@end

@interface Child : NSObject
{
     NSString* nameChild;
     NSImage* picture;
}

@property (copy, readwrite) NSString* nameChild;
@property (copy, readwrite) NSImage* picture;

@end

Я пытаюсь сделать NSCollectionView заполненным Father элементами, и для каждого элемента отца View у меня будет метка с именем, а другой NSCollectionView заполнен representedObject.listChildren элементами (отца).

Мне удалось создать внешний файл NIB для View отца NSCollectionViewItem, чтобы упростить задачу, но я не могу привязать дочерний CollectionView к свойству representedObject.listChildren. На самом деле нет проблем с привязкой в ​​IB, и во время выполнения система фактически вызывает свойство (я добавил getListChildren реализацию и вызов NSLog, чтобы убедиться, что свойство вызывается). Кажется, что внутренние CollectionView не будут загружать элементы, найденные в моем свойстве NSArray*?

Это сводит меня с ума, есть идеи о том, что происходит? Помоги пожалуйста!!


person Henrique Rangel    schedule 20.08.2010    source источник
comment
Возможный дубликат: stackoverflow.com/questions/2204147/ Там нет ответов, либо. Арх!   -  person andyvn22    schedule 21.08.2010
comment
Любые обновления или ответы на эти вопросы?   -  person Prasanth    schedule 05.10.2014


Ответы (1)


У меня была точно такая же проблема, и я нашел решение!

Я полный новичок в Objective C и Cocoa, поэтому я не совсем понимаю причины, по которым это не работает точно. Может быть, кто-нибудь еще просветит нас.

В моей первой попытке я просто сделал все по умолчанию MainMenu.xib. Таким образом, вы получите два NSArrayController. Теперь, как вы и подозревали, очевидно, проблема заключается во втором NSArrayController для внутренних предметов. Это как-то не "копируется" правильно. Извлечение каждого NSView в отдельный .xib решает эту проблему.

На самом деле это обсуждение зацепило меня. начал в правильном направлении. Позже я обнаружил/понял, что это в основном та же самая идея, на которую уже намекал @user493638.

Объединив эти знания с учебным пособием здесь, о том, как извлечь представления в их собственные .xib решили проблему для меня!

Опять же, я недостаточно понимаю Objective C и Cocoa, чтобы полностью оценить основные причины такого поведения, кто знает, как именно вся эта магия связывания работает под капотом...

person eric    schedule 26.09.2012
comment
Можете ли вы поделиться примером того, что вы сделали? - person Prasanth; 05.10.2014