2009-05-01 26 views
7

Sono un newbi nello sviluppo di iPhone. Voglio creare un'app che abbia un UIViewController per primo, che avrà un pulsante. Ora facendo clic sul pulsante, si carica un controller UINavigation . Ecco come i M si avvicina:Carica un UINavigationController come sottoview da UIViewController

  1. Ho creato una classe UIViewController, dove ho preso un

    -(IBAction) PressMeFunc:(id) sender 
    

    per il pulsante da premere.

  2. Quindi ho creato un file xib UIView. Ho eseguito i passaggi richiesti nell'IB.

  3. Quindi in AppDelegate, ho aggiunto l'istanza di ViewController come sottomaschera della finestra.

Fino a questo è OK.

Quindi, come posso caricare un controller di navigazione premendo il pulsante?

So come creare un progetto NavigationController dall'app basata su finestre, ma ho difficoltà a fare NavigationController come sottoview di UIView.

Il vostro aiuto è molto apprezzato.

risposta

8

Il NavigationController è progettato per rilevare lo schermo quando viene utilizzato, quindi è necessario decidere come gestire la transizione a NavigationController dal ViewController originale. Puoi farlo con presentModalViewController, o gestendo la rimozione della tua vista originale e scambiando il NavigationController in modo programmatico.

Ecco il numero the Apple documentation per l'impostazione di un NavigationController in modo programmatico.

Il codice sta per essere simile a questa (dal doc di Apple):

GroupsController *groupsController = [[[GroupsController alloc] initWithNibName:nil bundle:nil] autorelease]; 
UINavigationController *navigationController = 
[[UINavigationController alloc] initWithRootViewController:groupsController]; 

Ora, una volta che hai creato il navigationController, e ha aggiunto il suo primo viewcontroller ad esso, è necessario passare ad esso . È possibile farlo con CATransitions, o con

[myViewController presentModalViewController: navigationController]; 
+0

Grazie Mark per la rapida risposta. Ho scaricato il documento Apple che hai menzionato. Lo esaminerò e cercherò di caricare NavigationController da UIViewController, anche se non so cosa sia il presentomodViewView. In realtà voglio caricare un xml in NavigationController facendo clic su un pulsante che si trova in UIViewController. saluti, Xcodermi2 – XcoderMi2

+2

Questa è una vergogna di Apple, ci sono un sacco di problemi a meno che non si aggiunge solo UINavigationController è alla finestra principale, potrebbero avere almeno fatto una nota nella documentazione – valexa

5

Si consiglia di non aggiungere (compresa la navigazione) vista di un UIViewController come una visualizzazione secondaria ad una vista gestita da un altro controller della vista.

Ecco una lettura rilevante: http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

Nel tuo caso, che cosa si può fare è togliere di vista della viewcontroller dalla finestra , quindi aggiungere vista del controller di navigazione alla finestra.

[viewController.view removeFromSuperview]; 
[window addSubview:navigationController.view]; 

è inoltre possibile aggiungere come un controller di vista modale come suggerito qui, o si può fare il primo controller di vista di un controller di navigazione e sulla pila di quel controller di navigazione, premere il secondo controller di navigazione:

[navigationController pushViewController:secondNavigation animated:NO]; 

Edit: eh appena notato che sto rispondendo a una domanda 09

Edit # 2: Questo può essere irrilevante per iOS 5 e il contenimento cosa UIViewController hanno aggiunto, ancora non ha avuto la possibilità di verificare fuori, ma se tu stai leggendo questa risposta, potresti volere.

+2

+1 per la risposta e +10 per aver risposto a una domanda '09! :) – Jann

Problemi correlati