2013-03-17 4 views
8

Devo creare un'applicazione con un modulo di accesso/singup e una mappa Google personalizzata. Sono nuovo nella programmazione iOS e sto cercando di imparare molto velocemente le cose necessarie per questa app.Come caricare un altro controller di visualizzazione dal file di implementazione del controller di visualizzazione corrente?

Così, ho creato il frontend e il backend del modulo di login, funziona. Ho un'azione che viene attivata dal pulsante "Accedi" che verifica le credenziali e che fa scattare un errore o presenta la mappa di Google.

Voglio mostrare che Google Map in un altro controller di vista che controlla un altro file xib. Ho creato il controller di visualizzazione e il file xib.

La mia domanda è: come posso caricare un altro controller di visualizzazione da un'azione inserita nel file di implementazione del controller di visualizzazione corrente?

Ora, io ho questo codice:

UIViewController *mapViewController = 
       [[BSTGMapViewController alloc] initWithNibName:@"BSTGMapViewController" 
                  bundle:nil]; 

Come posso rendere la "radice View Controller" della finestra e magari con una transizione (considerando la mia logica è ok: D)?

risposta

17

Se si desidera aprire ViewController da un altro, è necessario definirlo in questo modo nel proprio IBAction. È comunque consigliabile creare la proprietà viewController come proprietà.

FirstViewController.h

@class SecondViewController; 

@interface FirstViewController : UIViewController 

@property(strong,nonatomic)SecondViewController *secondViewController; 
@end 

FirstViewController.m

-(IBAction)buttonClicked:(id)sender{ 
    self.secondViewController = 
        [[SecondViewController alloc] initWithNibName:@"SecondViewController" 
                   bundle:nil]; 
    [self presentViewController:self.secondViewController animated:YES completion:nil]; 

} 

Si dovrebbe fare un viewController come rootViewController nella AppDelegate classe qualcosa di simile

YourFirstViewController *firstViewController=[[YourFirstViewController alloc]initWithNibName:@"YourFirstViewController" bundle:nil]; 

self.window.rootViewController=yourFirstViewController; 
+0

Ricordo di averlo provato. Lasciami testare e ti riporterò. – Octavian

+1

che ne dici di postare il tuo codice se hai provato qualcosa? – nsgulliver

+0

Ha funzionato. Grazie – Octavian