2010-02-22 12 views
6

Sono voler qualcosa di simile a come iWork ha la schermata di selezione del modello per le pagine quando è possibile selezionare i modelli differenti, e ogni vista contiene informazioni diverse ha formati di differenza, eccC'è un modo per avere viste diverse in un NSCollectionView?

ho cercato sottoclassi NSCollectionView e determinare quali Visualizza per visualizzare utilizzando il metodo newItemForRepresentedObject (anziché utilizzare la vista itemPrototype Interface Builder), ma per qualche motivo non posiziona correttamente le viste e non mostra il numero corretto di visualizzazioni per il numero di elementi presenti. Ecco il mio codice. Speravo che qualcuno potesse avere un modo migliore per farlo, o un esempio di come è fatto.

personView e companyView sono proprietà nella sottoclasse NSCollectionView, ovvero IBOutlet alle viste in IB.

-(NSCollectionViewItem *)newItemForRepresentedObject:(id)object{ 
NSCollectionViewItem *collectionViewItem = [[NSCollectionViewItem alloc] init]; 

[collectionViewItem setRepresentedObject:object]; 

if([[object valueForKey:@"company"] boolValue] == YES){ 
    NSView *view = [companyView retain]; 
    [collectionViewItem setView:companyView]; 
}else{ 
    [collectionViewItem setView:personalView]; 
} 

return collectionViewItem; 

}

+0

Forse questo potrebbe aiutare: http://stackoverflow.com/questions/1210352/how-do-i-bind-programatically-in-the-view-subclass-of-my-nscollectionview?rq=1 –

risposta

0

(Non sembra nemmeno possibile fare un NSCollectionView con vista dell'elemento di dimensioni diverse; ogni formato avrebbe bisogno di essere un divisore multiplo o un numero intero di una certa dimensione "principale", e avresti bisogno di fare controlli e controlli massicci per assicurarti che sia possibile renderli in una griglia. Sei sicuro di fare la domanda giusta?)

Inoltre, non vedo niente in questo modo in iWork: tutte le viste nel suo selettore di modelli sono le stesse. (Anche se le loro sottocartelle NSImageView sono di dimensioni diverse). Suggerirei se possibile utilizzare la stessa vista e modificare le sue sottoview in modo appropriato. È facile, ad esempio, associare la proprietà "nascosta" dei campi di testo o modificare la larghezza di una vista immagine. Non puoi creare una vista singola che funzioni per entrambe le classi, cambiando se stessa in modo appropriato a seconda dell'oggetto rappresentato?

Problemi correlati