2010-08-20 23 views
1

J'ai ces deux classes:NSCollectionView dans un autre 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 

Je suis en train de faire un NSCollectionView rempli de Father articles et pour View de chaque élément de père i aura une étiquette de nom, et un autre NSCollectionView rempli avec le (father) representedObject.listChildren Articles.

J'ai réussi à créer un fichier NIB externe pour l » View le père NSCollectionViewItem pour faciliter les choses, mais je ne suis pas capable de se lier à l'enfant CollectionView à la propriété representedObject.listChildren. En fait, il n'y a pas de problème de liaison dans IB, et au moment de l'exécution, le système appelle la propriété (j'ai ajouté une implémentation getListChildren et un appel NSLog pour m'assurer que la propriété est appelée). Il semble que le CollectionView ne chargera pas les éléments trouvés dans ma propriété NSArray *?

Ça me rend fou, des idées sur ce qui se passe? Aide s'il vous plaît !!

+0

double possible: http://stackoverflow.com/questions/2204147/debugging-nested-nscollectionviews Aucune réponse ici non plus. Argh! – andyvn22

+0

Des mises à jour ou des réponses à ces problèmes? – Prasanth

Répondre

0

J'ai eu exactement le même problème et j'ai trouvé la solution! Je suis complètement novice en Objective C et en Cocoa, donc je ne comprends pas complètement les raisons pour lesquelles cela ne fonctionne pas exactement. Peut-être que quelqu'un d'autre peut nous éclairer.

Dans mon premier essai, j'ai tout simplement fait tout dans le MainMenu.xib par défaut. Vous vous retrouvez avec deux NSArrayController de cette façon. Maintenant, apparemment, comme vous le soupçonniez, le problème réside dans la seconde NSArrayController pour les objets intérieurs. En quelque sorte, il n'est pas "copié" correctement. Extraire chaque NSView dans son propre .xib résout ce problème.

En fait, ce discussion m'a permis de démarrer dans la bonne direction. J'ai plus tard découvert/compris que c'est la même idée que l'utilisateur @ 494938 déjà fait allusion.

La combinaison de ces connaissances avec le tutoriel here, sur la façon d'extraire les vues dans leur propre .xib a résolu le problème pour moi!

Encore une fois je ne comprends pas Objective C et Cocoa assez pour apprécier pleinement près les raisons sous-jacentes de ce comportement, qui sait exactement toute cette magie fonctionne contraignant sous le capot ...

+0

Pouvez-vous partager un échantillon de exactement ce que vous avez fait? – Prasanth