Desidero aggiungere un TableViewController come controller di visualizzazione figlio di un containerViewController (mostrato di seguito). Secondo Apple di View Controller Programming Guide posso raggiungere questo obiettivo le seguenti righe di codice all'interno del mio containerViewController:Aggiungere una vista del controller di visualizzazione figlio a una sottoview del controllore della vista padre
[self addChildViewController:tableViewController];
[self.view addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];
In realtà, che funziona bene. Ora il problema è che non voglio aggiungere la vista di tableViewController come sottoview della vista root di containerViewController. Invece voglio aggiungerlo come una sottoview del containerView (vedi immagine) che a sua volta è una sottoview della vista root di containerViewController. Così ho cambiato il codice precedente come segue:
[self addChildViewController:tableViewController];
[self.contentView addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];
Ora quando lancio l'applicazione si blocca immediatamente con questo errore:
Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller: should have parent view controller: but actual parent is:'
Qual è il problema? Non è possibile aggiungere una vista childViewController ad una specifica vista del suo containerViewController? O come posso ottenere questo risultato senza un errore nella gerarchia del controller di visualizzazione?
Sei sicuro di questo e hai provato quel codice? L'ho provato e * fa * fa la differenza se si aggiunge la vista childViewController alla vista root del containerViewController o ad una qualsiasi delle sue subviews. – Mischa
@Mischa Codice sorgente incluso nella risposta. Si prega di controllare. – Anupdas
+1 per tableViewController.view.frame = self.contentView.bounds; – onmyway133