2010-02-22 2 views
6

ich etwas Ähnliches bin zu wollen, wie iWork die Vorlage Auswahlbildschirm für Seiten hat, wenn Sie verschiedene Vorlagen auswählen können, und jede Ansicht enthält verschiedene Informationen hat Größen Unterschied usw.Gibt es eine Möglichkeit, unterschiedliche Ansichten in einer NSCollectionView zu haben?

Ich habe Subklassen NSCollectionView versucht und bestimmen, welche Ansicht angezeigt Mit der Methode newItemForReprenededObject (im Gegensatz zur Verwendung der itemPrototype-Ansicht Interface Builder) werden die Ansichten aus irgendeinem Grund nicht korrekt positioniert, und es wird nicht die korrekte Anzahl von Ansichten für die Anzahl der vorhandenen Elemente angezeigt. Hier ist mein Code. Ich habe gehofft, dass jemand einen besseren Weg hat, dies zu tun, oder ein Beispiel dafür, wie das gemacht wird.

personView und companyView sind Eigenschaften in der untergeordneten NSCollectionView, die IBOutlets für Ansichten in IB sind.

-(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

Vielleicht könnte dies helfen: http://stackoverflow.com/questions/1210352/how-do-i-bind-programatically-in-the-view-subclass-of-my-nscollectionview?rq=1 –

Antwort

0

(Es ist nicht einmal möglich, scheinen eine NSCollectionView mit unterschiedlich großen Artikelansichten zu machen; jeder Größe benötigen würde ein Vielfaches oder ganzzahligen Teiler von einigen „main“ Größe sein, und Sie müssen eine riesige Anzahl von Elementen überprüfen und nachbestellen, um sicherzustellen, dass sie auch in einem Raster gerendert werden können. Sind Sie sicher, dass Sie die richtige Frage stellen?

Auch ich sehe nichts so in iWork: Alle Ansichten in der Vorlagenauswahl sind gleich. (Obwohl ihre NSImageView Subviews von unterschiedlicher Größe sind.) Ich würde empfehlen, wenn überhaupt, die gleiche Ansicht zu verwenden und seine Unteransichten entsprechend zu ändern. Es ist beispielsweise einfach, die "ausgeblendete" Eigenschaft von Textfeldern zu binden oder die Breite einer Bildansicht zu ändern. Können Sie nicht eine einzelne Ansicht erstellen, die für beide Klassen funktioniert und sich je nach dem dargestellten Objekt entsprechend ändert?