Nella mia app ho una pagina iniziale che ha una scheda/griglia con una sezione multipla. Quindi UICollectionView
è la scelta più ovvia qui. Ma queste carte variano molto nel design, caricando anche i dati e le loro funzionalità. Quindi mettere tutti quelli in un unico controller sarebbe ingombrante, complesso e difficile da mantenere. Quindi abbiamo pensato di doverli separare nel loro UIViewControllers
. Ognuno gestisce un tipo di carta e calcola il suo contenuto Dimensione da mostrare all'interno di una carta. Il nostro controller principale della home page è responsabile solo per inserire le visualizzazioni di viewcontroller
all'interno delle celle UICollectionView
.Incorporamento di UIViewcontrollers all'interno di UICollectionviewCells
Per summerize,
- Un HomeViewController che ha una CollectionView
- Ogni vista all'interno del collectionViewCell ei relativi dati sono mantenuti dalla propria classe controller.
- Tutte le istanze del controller sono all'interno del HomeViewController e added as its children .- Apple Guide
- The appearance call s per tutti i bambini viewControllers sono fatti da noi stessi in quanto il contentSize (che viene utilizzato come oggetto la dimensione per il layout CollectionView) calcolo, delle viste del controllore è necessario caricare la vista e impostare i dati.
La mia domanda è questa, questa scelta di progettazione è giusta? O quale approccio sceglieresti per implementare tale schermo? Dato che creiamo molti viewControllers (uno per ogni cella), ciò influisce sulla memoria o sulle prestazioni? E se voglio mettere in cache solo alcuni viewControllers o caricarli mentre l'utente scorre o quando è il momento di aggiungerlo alla cella collectionView, come faccio a farlo mentre il calcolo della dimensione di quella cella dipende dai dati e dalle viste durante la posa fuori dal layout CollectionView.
Capisco perfettamente quando dici che sembra un eccesso. Forse non ero molto chiaro quando ho detto che il design t, il caricamento dei dati varia molto da una scheda all'altra. Una scheda potrebbe anche avere un oggetto TableView all'interno o un altro insiemeView o un insieme complesso di viste. Come quei delegati di TableView o quelle di altre Viste all'interno di quelle viste. Quindi avrò bisogno di un "oggetto che gestisce una vista e i suoi dati", che a me sembra una definizione di UIViewController. Così ho deciso di usare un viewcontroller. – akshaynhegde
E riguardo l'uso di un viewcontroller per una sezione, potrebbe esserci di nuovo un tipo simile di schede pop-up in diverse sezioni, quindi quale tipo di schede potrebbe essere presente in ogni sezione non è definito fino a quando non recupero i dati dal server. Queste informazioni (tipo di carta, dati o come dovrebbe apparire) sono definite sul lato server. Così finirò per creare un controller che dovrebbe sapere come gestire ogni tipo di scheda. – akshaynhegde
Sto affrontando lo stesso problema ora, quello che ho fatto è prendere uno screenshot della vista del View Controller salvarlo nella cache e usare quello screenshot in UICollectioVisualCell tutto va bene tranne uno scroll discontinuo durante la prima volta, Dal momento che crea la vista e prende screenshot quando la cella viene caricata per la prima volta. Ho bisogno di qualche suggerimento o miglioramento – Koushik