2013-03-17 9 views
8

Ich muss eine App erstellen, die ein Login/Singup-Formular und dann eine benutzerdefinierte Google Map enthält. Ich bin neu in iOS-Programmierung und versuche, die Dinge, die für diese App benötigt werden, sehr schnell zu lernen.Wie lade ich einen anderen View-Controller aus der Implementierungsdatei des aktuellen View-Controllers?

Also, ich habe das Frontend und das Backend des Login-Formulars erstellt, es funktioniert. Ich habe eine Aktion, die durch den "Anmelden" Button ausgelöst wird, der die Zugangsdaten verifiziert und entweder einen Fehler auslöst oder die Google Karte anzeigt.

Ich möchte zeigen, dass Google Map in einem anderen View-Controller, der eine andere XIB-Datei steuert. Ich habe den View-Controller und die XIB-Datei erstellt.

Meine Frage ist, wie kann ich einen anderen View-Controller aus einer Aktion in der Implementierungsdatei des aktuellen View-Controllers geladen werden?

Nun, ich habe diesen Code:

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

Wie kann ich es die "root-View-Controller" des Fensters und vielleicht sogar einen Übergang mit (unter Berücksichtigung meiner Logik ist ok: D)?

Antwort

17

Wenn Sie die ViewController von einer anderen öffnen möchten, dann sollten Sie dies in Ihrer IBAction definieren. Es ist eine gute Idee, die viewController als Eigenschaft zu machen.

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]; 

} 

Sie sollte wie folgt

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

self.window.rootViewController=yourFirstViewController; 
eine Viewcontroller als rootViewController in Ihrer AppDelegate Klasse etwas machen
+0

Ich erinnere mich daran, das zu versuchen. Lass mich testen und ich melde mich zurück. – Octavian

+1

Wie wäre es mit dem Posten Ihres Codes, wenn Sie etwas versucht haben? – nsgulliver

+0

Es hat funktioniert. Danke – Octavian