Domanda

Ho un visualizzazione elenco di classe che, proprio come NSCollectionView richiede un oggetto prototipo supplementare e una vista prototipo per essere di qualche utilità. Quando cadere un NSCollectionView dalla libreria in Interface Builder vengono creati automaticamente questi due elementi di supporto. Tuttavia, non sono riuscito a trovare un singolo dealing documento ufficiale Apple con questo caso d'uso (che descrive come il suo fare).

Scavando attraverso i Dev guide di Apple però sono riuscito a trovare " ibDidAddToDesignableDocument :"
. Con questo codice sono riuscito ad ottenere i miei oggetti ausiliari creati su goccia dalla biblioteca:

- (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];
}

Tuttavia ...

... IB aggiunge quegli elementi aux per NSCollectionView solo sul reale trascinare iniziale dalla biblioteca , non su qualsiasi altra chiamata di "ibDidAddToDesignableDocument :", come ad esempio quando l'incorporamento, copiare o duplicare la voce. (Mentre il mio metodo sarebbe, e su tutti)

Questo mi fa chiedere se Apple utilizza effettivamente "ibDidAddToDesignableDocument:" per questo e se sono sulla strada giusta con questo a tutti.

Come si fa a imitare questo modo corretto? Sto avendo un momento difficile cercando di distinguere tra diversi contesti per "ibDidAddToDesignableDocument:". Chiunque fatto con successo questo?
Purtroppo nessuno di Google, Google Code, GitHub, o la documentazione ha rivelato qualcosa di utile, quindi sono un disperato bisogno di aiuto qui. : (

Grazie in anticipo!

Edit: Oh grande, questa domanda mi ha portato il distintivo Tumbleweed, yay! Non.
Sono più in risposte utili in realtà, ma grazie comunque;)

È stato utile?

Soluzione

Ho lottato con questo su un plugin che ho fatto io stesso qualche tempo fa. Nel mio caso sono stato in grado di controllare una proprietà dell'oggetto per vedere se fosse stato già inizializzato e saltare l'aggiunta di oggetti ausiliari in quel caso. Credo BWToolkit utilizza qualche controllo interno che è simile. Non potresti controllare la proprietà del vostro oggetto 'prototypeItem' per vedere se è necessario ignorare la creazione di oggetti aux?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top