xcode - uicollectionview self sizing cells



Diseño de celdas UICollectionView en nib con Interface Builder(sin guión gráfico) (1)

Estoy intentando diseñar un prototipo personalizado de UICollectionViewCell (en Xcode 5.0.2), sin embargo, Interface Builder no me permite agregar una celda a mi UICollectionView mientras diseño una plumilla. Puedo configurar el número de elementos (celdas) y Interface Builder crea y muestra celdas perfectamente si estoy usando el guión gráfico, pero no puedo agregar una celda a mi vista de colección en una plumilla. He intentado:

  • Arrastre y suelte la celda de vista de colección en la vista de colección manualmente desde la biblioteca de objetos. (falla: no me deja caer la celda en ningún lugar de mi vista)
  • Crear mi vista de colección con celdas en el guión gráfico y copiar y pegar toda la vista en la punta. (falla: la vista de colección se copia pero la celda se va)
  • Creando mi vista de colección con celdas en el guión gráfico, abriendo el guión gráfico como código fuente, encontrando las celdas de mi vista de colección, copiando el XML relevante, abriendo mi plumilla como código fuente, pegándolo dentro de mi vista de colección en XML. (falla: no se puede abrir la pluma en Interface Builder, da errores. Cuando quito la celda del código fuente, se abre de nuevo. No intente esto si no sabe lo que está haciendo).

También he visto varias preguntas sobre el mismo tema:

Todos apuntan a hacerlas programáticamente y / o usar otra punta para la celda. Sé cómo hacerlo, pero ¿hay alguna forma de diseñar la celda de vista de colección, dentro de una vista de colección dentro de la misma vista en una plumilla, igual que en el guión gráfico? ¿Por qué Interface Builder no me permite hacer eso en la punta donde permite (e incluso alienta) usar el guión gráfico a la perfección?


La respuesta simple es no, esto no se puede hacer. Piense en un guión gráfico como una colección de XIBs. Un XIB simplemente define las facetas de una vista particular para que pueda construirse en tiempo de ejecución.

Con respecto a las vistas de colección y sus implementaciones de guión gráfico, es importante comprender que un guión gráfico permite anidar los controladores de visualización y definir vistas de colección con sus XIB, ya que mantiene el paradigma fundamental de los guiones gráficos coherente. Dado que un guión gráfico es el medio para definir la "historia" o la escena de una aplicación, es natural que permita la declaración de las vistas reutilizables para su uso dentro de una vista de colección.

No se puede decir lo mismo de los XIB porque la idea fundamental detrás de los XIB es la reutilización. Esto permitirá que una vista de colección definida en un XIB tenga celdas usadas siempre que el controlador registre estas clases con la vista de colección. De esta manera usted obtiene el beneficio de la reutilización ya que otro controlador puede usar el mismo XIB y registrar diferentes celdas, etc.

Así que creo que sería mucho más confuso permitir la declaración de las celdas admitidas de una vista de colección dentro de un XIB ya que rompe el principio de responsabilidad única (si se puede llamar así) al que aspiran los XIB.

Su mejor solución sería definir una subclase de vista de colección personalizada que registre las celdas relevantes en la instanciación y luego usar esta clase en su XIB.





uicollectionviewcell