2010-09-25 4 views
0

J'ai une vue de liste classe qui, tout comme NSCollectionView nécessite un élément prototype supplémentaire et une vue prototype pour être utile. Lorsque vous supprimez un NSCollectionView de la bibliothèque dans Interface Builder, ces deux éléments d'aide sont automatiquement créés. Cependant, je n'ai pas pu trouver un seul document Apple officiel traitant de ce cas d'utilisation (décrivant comment cela se fait). Je pouvais cependant trouver "ibDidAddToDesignableDocument:" à l'aide des guides de développement Apple.
Avec le code suivant j'ai réussi à obtenir mes articles auxiliaires créés à goutte de la bibliothèque:IBPlugin: Ajouter des objets supplémentaires sur glisser de IB Library

- (void)ibDidAddToDesignableDocument:(IBDocument *)document { 
    [super ibDidAddToDesignableDocument:document]; 

    NSView *prototypeView = [[[NSView alloc] initWithFrame:NSMakeRect(0.0, 0.0, 300, 65.0)] autorelease]; 
    DLListViewItem *prototypeViewItem = [[[DLListViewItem alloc] initWithNibName:nil bundle:nil] autorelease]; 

    [document addObject:prototypeViewItem toParent:nil]; 
    [document addObject:prototypeView toParent:nil]; 

    [document connectOutlet:@"view" ofSourceObject:prototypeViewItem toDestinationObject:prototypeView]; 
    [document connectOutlet:@"listView" ofSourceObject:prototypeViewItem toDestinationObject:self]; 
    [document connectOutlet:@"prototypeItem" ofSourceObject:self toDestinationObject:prototypeViewItem]; 
} 

Mais ...

... IB ajoute ces articles aux pour NSCollectionView seulement sur la réelle initiale faites glisser depuis la bibliothèque, pas sur un autre appel de "ibDidAddToDesignableDocument:", comme lors de l'incorporation, la copie ou la duplication de l'élément. (alors que ma méthode serait, et sur tous)

Cela me fait me demander si Apple utilise réellement "ibDidAddToDesignableDocument:" pour cela et si je suis sur la bonne voie avec cela du tout.

Comment l'imiter correctement? J'ai du mal à faire la distinction entre différents contextes pour "ibDidAddToDesignableDocument:". Quelqu'un a-t-il réussi cela?
Malheureusement, aucun de Google, Google Code, GitHub, ou la documentation n'a révélé quelque chose d'utile, alors j'ai désespérément besoin d'aide ici. :(

Merci à l'avance

Edit: Oh grand, cette question me a l'insigne Tumbleweed, yay Pas
Je suis plus dans des réponses utiles en fait, mais merci quand même;)

!.

Répondre

0

Je me suis battu avec ça sur un plugin que je me suis fait il y a un moment. Dans mon cas, j'étais capable de vérifier une propriété de l'objet pour voir si elle avait déjà été initialisée et sauter l'ajout des objets auxiliaires dans ce cas. Je crois que BWToolkit utilise des vérifications internes similaires. Vous n'avez pas pu vérifier la propriété 'prototypeItem' de votre objet pour voir si vous devez ignorer la création de vos objets aux.

+0

Euh, ça fait mal. Non, c'est vraiment le cas. :(* head-> desk * Merci, votre dernière suggestion a fonctionné parfaitement :) – Regexident

Questions connexes