Incorporación de UIViewcontrollers dentro de UICollectionviewCells

En mi aplicación tengo una página de inicio que tiene un layout de tarjeta / rejilla con sección múltiple. Entonces, UICollectionView es la elección obvia aquí. Pero estas tarjetas varían mucho en layout, carga de datos y su funcionalidad también. Así que poner todos esos en un solo controller sería engorroso, complejo y difícil de mantener. Entonces pensamos que necesitamos separarlos en sus propios UIViewControllers . Cada uno maneja un tipo de tarjeta y calcula su contenido Size para que se muestre dentro de una tarjeta. Nuestro controller de página de inicio principal es el único responsable de poner esas vistas de viewcontroller visualización dentro de las celdas de UICollectionView .

Para verano,

  • Un HomeViewController que tiene un CollectionView
  • Cada vista dentro de la colección ViewCell y sus datos son mantenidos por su propia class de controller.
  • Todas las instancias del controller se encuentran dentro del HomeViewController y se agregaron como sus hijos.- Apple Guide
  • La apariencia de la llamada s para todos los niños viewControllers está realizada por nosotros mismos, ya que el contenido contentSize (que se utiliza como el tamaño del elemento para el layout de la colección collectionView) de las vistas del controller necesita que se carguen la vista y que se establezcan los datos.

Mi pregunta es esta, ¿esta elección de layout es correcta? ¿O qué enfoque elegirías para implementar una pantalla de este tipo? Dado que creamos una gran cantidad de viewControllers (uno para cada celda), ¿afecta esto a la memory o al performance? Y si deseo almacenar en caching solo algunos controlleres de vista o cargarlos a medida que el usuario se desplaza o cuando es el momento de agregarlo a la celda de la colección, ¿cómo hago para calcular el tamaño de esa celda depende de los datos y las vistas al momento de la colocación fuera del layout CollectionView.

Creo que su enfoque es válido y, desde un punto de vista teórico, tiene sentido separar una vista de sus datos. Pero, en este caso, preferiría que la subclass UICollectionViewCell implementara sus propios datos, básicamente actuando como un viewController. Esto simplificará un poco su código ya que no necesita los viewControllers agregados y el código que viene con ellos; en su lugar, simplemente puede agregar su tableView a la ContentView de la celda. Esto me parece más natural, ya que entonces usted puede tener la colección de HomeViewControllerView manejar automáticamente llamando a sus delegates cuando las células se mueven fuera de la pantalla y durante y durante el process de carga. No necesitará enviar posts a las celdas sobre quiénes son o cuándo deben cargarse, todo esto se solucionará automáticamente. Además, realmente no creo que tener los methods del ciclo de vida de vista en cada celda sea valioso, y es less intuitivo que tener una carga de celdas y actualizarse como parte de un collectionView. De cualquier manera funciona, buena suerte!