2016-03-26 13 views
0

Ich habe eine UINavigationController in meinem Storyboard und zwei Viewcontrollers, der die folgende Funktion ausführen:Set RootViewController innerhalb einer Klasse von UINavigationController

InitialViewController: dies die Anwendung des Home-Bildschirm wäre.

FirstTimeViewController: ist der Bildschirm, der angezeigt wird, wenn der Benutzer die App zum ersten Mal öffnet.

Mein UINavigationController hat eine Klasse, die den folgenden Code haben:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    if ([[ReadPlist initWithPlist:@"Configuration.plist" key:@"initialConfiguration"] boolValue]){ 

     FirstTimeViewController *firstTimeController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"firstTimeView"]; //or the homeController 
     [self.navigationController pushViewController:firstTimeController animated:NO]; 

    }else{ 

    InitialViewController *initialController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"initialView"]; //or the homeController 
     [self.navigationController pushViewController:initialController animated:NO]; 

    } 

} 

Grundsätzlich ist dieser Code die .plist-Datei überprüfen, ob ein bestimmtes Feld aktiv ist, wenn JA bedeutet, dass die Anwendung zum ersten läuft Zeit, in diesem Fall ruft es den entsprechenden viewController auf.

Aber dieser Code funktioniert nicht und ich sehe einen NavigationController mit einer schwarzen Ansicht. Alles, was ich tun würde, ist dasselbe, was wir im Interface Builder tun, einfach eine Zeile aus dem UINavigationController in einen UIViewController ziehen und als "Root View Controller" einstellen, aber in meinem Fall versuche ich das programmatisch.

Wie kann ich das tun?

+0

In Ihrer aktuellen Implementierung Sie sind Pushviewcontroller, dass der Grund für die Rücktaste ist sichtbar ist. Stellen Sie besser die Navigation rootViewController ein –

Antwort

0

Wenn Sie auf FirstTimeViewController drücken Setzen Sie Bool (Benutzerstandard) in Controller ViewDidload Oder in Ihrem Erfolgscode.dann nach in Ihrem AppDelegate unterhalb Code festgelegt.

if (Bool Wert = Ja)

{

FirstTimeViewController * FS = [[UIStoryboard storyboardWithName: @ "Main" Bundle: nil] instantiateViewControllerWithIdentifier: @ "FirstTimeViewController"]; UINavigationController * navController = [[UINavigationController Alloc] initWithRootViewController: FS]; [navController setNavigationBarHidden: YES]; self.window.rootViewController = navController; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; }

0

Meine Antwort ist

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)options 
{ 
    UINavigationController *navController = (UINavigationController *)self.window.rootViewController; 
    FirstTimeViewController *firstTimeVC = [navController.storyboard instantiateViewControllerWithIdentifier:@" FirstTimeViewController"]; 
    InitialViewController *initialVC = [navController.storyboard instantiateViewControllerWithIdentifier:@" InitialViewController"]; 
    if ([[ReadPlist initWithPlist:@"Configuration.plist" key:@"initialConfiguration"] boolValue]) 
    { 
     // FirstTime 
     navController.viewControllers = [NSArray arrayWithObject:firstTimeVC]; 
    } 
    else 
    { 
     // Initial 
     navController.viewControllers = [NSArray arrayWithObject:initialVC]; 
    } 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
Verwandte Themen