2010-02-22 10 views
6

estoy queriendo algo semejante a como iWork tiene la pantalla de selección de plantillas para las páginas cuando se puede seleccionar diferentes plantillas, y cada vista contiene información diferente tiene tamaños de la diferencia etc.¿Hay alguna manera de tener diferentes vistas en un NSCollectionView?

me han tratado de subclases NSCollectionView y determinar qué vista para mostrar utilizando el método newItemForRepresentedObject (en oposición a usar itemPrototype view Interface Builder), pero por alguna razón no posiciona las vistas correctamente, y no muestra el número correcto de vistas para la cantidad de elementos presentes. Aquí está mi código. Esperaba que alguien pudiera tener una mejor manera de hacerlo, o un ejemplo de cómo se hace esto.

personView y companyView son propiedades en el NSCollectionView subclasificado, que son IBOutlet para vistas en 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

Quizás esto ayude: http://stackoverflow.com/questions/1210352/how-do-i-bind-programatically-in-the-view-subclass-of-my-nscollectionview?rq=1 –

Respuesta

0

(Incluso no parece posible hacer una NSCollectionView con vistas de elementos de diferentes tamaños; cada tamaño tendría que ser un divisor múltiple o entero de cierto tamaño "principal", y tendrías que hacer un control masivo de los artículos y realizar un pedido para asegurarte de que sea posible renderizarlos en una cuadrícula. ¿Estás seguro de que estás haciendo la pregunta correcta?

Además, no veo nada así en iWork: todas las vistas en su selector de plantillas son las mismas. (Aunque sus subvistas NSImageView son de diferentes tamaños). Lo recomendaría si fuera posible utilizando la misma vista y cambiando sus subvistas de forma adecuada. Es fácil, por ejemplo, vincular la propiedad "oculta" de los campos de texto o cambiar el ancho de una vista de imagen. ¿No puedes hacer una sola vista que funcione para ambas clases, cambiando de forma apropiada dependiendo del objeto representado?

Cuestiones relacionadas