2015-06-19 8 views
5

Attualmente sto sviluppando un'applicazione in iPad. L'app consiste di due sole viste, ma ciascuna vista contiene molti pulsanti ed etichette. Corrente, viene impostato il layout delle due viste. Ciascuno è impostato in un controller di visualizzazione. Ho anche un altro controller di visualizzazione che contiene il menu principale in alto e un grande contenitore (UIView) in cui spero che sia in grado di contenere le due viste che ho menzionato.Caricamento di un controller di visualizzazione in una vista Xcode

La mia domanda è, c'è un modo per mostrare un controller di visualizzazione all'interno di una vista? Voglio visualizzare un controller di visualizzazione all'interno di quel contenitore (UIView) quando clicco su un pulsante nel menu principale, e visualizzarne un altro quando clicco su un altro pulsante. Se il mio piano non è possibile, per favore fai qualche suggerimento per far funzionare la stessa cosa.

Grazie mille!

risposta

6

Sì si può facilmente farlo aggiungendo il UIViewController view come qui di seguito ..

_viewController=[self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"]; 
[self.view addSubview:viewController.view]; 

Non appena si aggiunge viewController.view il metodo viewDidLoad all'interno ViewController viene chiamato.

Aggiornamento: Come da UIViewController Class Reference è necessario aggiungere altri due passaggi quando si aggiunge un UIViewController come sottoview in un altro ViewController.

[self addChildViewController:viewcontroller]; 
[self.view addSubview:viewController.view]; 
[viewcontroller didMoveToParentViewController:self]; 

Quanto sopra completa la risposta.

Spero che questo aiuti. Saluti.

+0

ok, una domanda di follow-up. cosa succede se voglio cambiare il controller della vista all'interno della sottoview. devo rimuovere il precedente e aggiungerne un altro nuovo? –

+0

@EpicNinja Non ho ricevuto la tua domanda, stai chiedendo se vuoi apportare modifiche al viewcontroller già aggiunto? È così, non è necessario aggiungerlo di nuovo, è possibile avere funzioni create per un'attività specifica e chiamarla con l'oggetto viewcontroller che si avrebbe sicuramente. – iphonic

+0

Uhm, intendo ogni volta che voglio passare a una vista diversa sotto il contenitore, aggiungerò semplicemente quella sottoview? Non è necessario rimuovere la vista precedente che ho aggiunto ,? –

5

Custom Container View Controllers sono proprio ciò di cui hai bisogno. Se si utilizza Interface Builder e storyboard, trovare una vista contenitore, trascinarla nella vista e impostare la classe contenuta sul controller di visualizzazione.
container view in objects library

Se non si utilizzano storyboard, o IB (che vi incoraggio a fare) - segui il link qui sopra e implementare l'aggiunta di un controller di vista bambino per il vostro controller della vista. Mai e poi mai aggiungere una sottoview senza la precedente chiamata addChildViewController:, questo potrebbe portare a risultati imprevisti. Normalmente, l'aggiunta di un controller della vista bambino dovrebbe essere in questo ordine:

  1. chiamata Vista VC [self addChildViewController:childvc]
  2. aggiuntivo del bambino come una visualizzazione secondaria [self.view addSubview:childvc.view]
  3. chiamata [childvc didMoveToParentViewController:self]

In tal caso tutto funziona correttamente .

+0

Grazie @ Sega-Zero. Ci proverò. :) –