0

Ich habe ein UITabBarController Behälter 4 View-Controller und zwei andere Ansicht Controller als SplashScreenVC und LoginScreenVC als i UINavigationViewController als Root-View-Controller gesetzt haben und initiieren mit Hilfe der Navigationssteuereinrichtung in meinem Storyboard Splash Screen aber Wenn ich die App TabBarController und Splash-Screen tatsächlich laufen beide gleichzeitig ausführen. Ich möchte alle Ansichten der Tableiste laden, die nach dem Begrüßungsbildschirm und der Übermittlung der Anmeldedaten geladen werden. Hier ist mein Code, wo ich Root-View-Controller gesetzt.UITabBarController läuft parallel mit meinem splashsceen

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

HomeViewController *homeVC = [[HomeViewController alloc]init]; 
homeVC.title = @"Home"; 

NotificationViewController *notificationVC = [[NotificationViewController alloc]init]; 
notificationVC.title = @"Notifications"; 

ProfileViewController *profileVC = [[ProfileViewController alloc]init]; 
profileVC.title = @"Profile"; 

SelfiesCollectionViewController *selfiesCollectionVC = [[SelfiesCollectionViewController alloc]init]; 
selfiesCollectionVC.title = @"Selfie Collection"; 

homeVC = [storyBoard instantiateViewControllerWithIdentifier:@"HomeViewController"]; 

profileVC = [storyBoard instantiateViewControllerWithIdentifier:@"ProfileViewController"]; 

notificationVC = [storyBoard instantiateViewControllerWithIdentifier:@"NotificationViewController"]; 

selfiesCollectionVC = [storyBoard instantiateViewControllerWithIdentifier:@"SelfiesCollectionViewController"]; 



self.tabBarController = [[UITabBarController alloc]init]; 
self.tabBarController = [storyBoard instantiateViewControllerWithIdentifier:@"UITabBarController"]; 
self.tabBarController.viewControllers = @[homeVC,notificationVC,profileVC,selfiesCollectionVC]; 


UINavigationController *navigationVC = [[UINavigationController alloc]init]; 
navigationVC = [storyBoard instantiateViewControllerWithIdentifier:@"UINavigationController"]; 


[self.window setRootViewController:navigationVC]; 

Antwort

0

Sie müssen folgende Dinge tun.

1) Wenn Sie ab Xcode 7 arbeiten, haben Sie ein spezielles Storyboard für den Begrüßungsbildschirm. Sie können Ihr Bild in diesem Storyboard festlegen.

Was benötigen Sie genau Tab-Controller oder Navigation Controller?

Nach meiner Annahme benötigen Sie Navigationscontroller für Login-Controller. Wenn meine Annahme zutrifft, dann müssen Sie die Navigation Controller-Objekt erstellen, in folgenden Weise

UINavigationController *navigationVC = [[UINavigationController alloc]initWithRootViewController:LoginScreenVC]; 

jetzt müssen Sie diese navigationVc hinzufügen in Ihrem Viewcontrollers Arrays TabBarController. und stattdessen navigationVc als Root-Controller von Ihnen Fenster einstellen, können Sie Tab-Leiste als Root-Controller

[self.window setRootViewController:self.tabBarController]; 

Vorschlag festgelegt: Wenn Sie Storyboard verwenden Sie nicht alle diese Zeilen zu schreiben. Sie können es sehr einfach in Ihrer Storyboard-Datei verwenden, indem Sie Segmente verwenden.

+0

Vielen Dank Herr mich zu korrigieren. –

+0

Sitzen dort ist immer noch ein Problem .. Nach Ihrer Lösung mein LoginVC wurde nicht der Teil der Tab-Leiste. Und noch immer laufen die anderen View-Controller der Tab-Leiste zusammen. Ich möchte zuerst den Login-Bildschirm anzeigen, dann den Benutzernamen und das Passwort nach der Bestätigung überprüfen, dann möchte ich meine Tab-Leiste ausführen und die Controller in der Tab-Leiste anzeigen. Aber mein Problem ist immer noch da. –

0

Sie sollten nicht alloc und init Ihre tabBarController vor oder die Notwendigkeit. In Ihrem müssen Sie eine öffentliche Methode wie folgt machen. die Zuordnung und die Einleitung von tabBarController von application launchWithOption Methode

-(void)userDidLoggedIn{ 
    self.tabBarController = [[UITabBarController alloc]init]; 
self.tabBarController = [storyBoard instantiateViewControllerWithIdentifier:@"UITabBarController"]; 
self.tabBarController.viewControllers = @[homeVC,notificationVC,profileVC,selfiesCollectionVC]; 
[self.window setRootViewController:self.tabBarController]; 

} 

Jetzt rufen Sie einfach diese Methode auf den Erfolg der Login-Button wie diese entfernen ..

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
[appDelegate userDidLoggedIn]; 
Verwandte Themen