2016-07-26 13 views
0

Ich benutze Firebase für die Authentifizierung. Sobald sich der Benutzer anmeldet, möchte ich mit dem Tab-Controller zum Startbildschirm wechseln.IOS Swift- Zum Startbildschirm ohne Storyboard navigieren

App Delegatfunktion

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
{ 
    window = UIWindow(frame: UIScreen.mainScreen().bounds) 
    window?.makeKeyAndVisible() 
    navToSignin() 
    return true 
} 
func navToHome() 
{ 
    print("navToHome") 
    let customTab = CustomTabBar() 
    window?.rootViewController = customTab 
} 
func navToSignin() 
{ 
    let firstPage = SigninNewVC() 
    window?.rootViewController = firstPage 
} 

SigninNewVC

override func viewWillAppear(animated: Bool) 
{ 
    super.viewWillAppear(animated) 

    if FIRAuth.auth()?.currentUser?.uid != nil 
    { 
     if let appDel = UIApplication.sharedApplication().delegate as? AppDelegate 
     { 
      print("viewWillAppear") 

      appDel.navToHome() 
     //This func gets called but still does not navigate to Home VC 
     } 
    } 
} 

private func fbSignin(token: String) 
{ 
    FIRAuth.auth()?.signInWithCustomToken(token) { (user, error) in 

     if error == nil 
     { 
      if user != nil 
      { 
       if let appDel = UIApplication.sharedApplication().delegate as? AppDelegate 
       { 
        JulehHUD.hideProgressHUD(self.view!) 
        appDel.jumpToHome() 
        //This part works fine when i login it navigates to Home Screen 
       } 
      } 
     } 
     else 
     { 
      print("Error:\n\(error)\n") 
     } 
    } 
} 

Als ich zum ersten Mal anmelden, es funktioniert gut ich bin in der Lage zu Home-Bildschirm zu navigieren. Aber wenn ich die App neu starte, kann ich nicht zum Startbildschirm navigieren. Es bleibt in der SigninNewVC, obwohl die Druckanweisungen ("viewWillAppear") & print ("navToHome") ausgeführt werden. Nicht sicher, was ich falsch mache. Im Folgenden finden Sie CustomTabBar meine Tab Bar Klasse

Klasse: UITabBarController {

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    let homeController = HomeScreenVC() 
    let newHomeTab = UINavigationController(rootViewController: homeController) 
    newHomeTab.title = "Home" 

    viewControllers = [newHomeTab] 

} 
} 

Bitte lassen Sie mich wissen, was ich falsch mache.

+0

Verwenden Sie Xib oder Storyboard für den Viewcontroller? – Tj3n

+0

@ Tj3n nein ich verwende es nicht – vanquish

Antwort

0

Ich glaube, Sie die VC insantiated falsch, sollten Sie so etwas wie CustomTabBar(nibName: nil, bundle:nil) und fügen Sie Ihre Subview in seiner loadView:

+0

Das dd nicht funktionieren. Aber ich konnte es beheben, indem ich den folgenden Code zu navToHome() & navToSignin() in App Delegate hinzufügte. Trotzdem Danke. window = UIWindow (Rahmen: UIScreen.mainScreen(). Grenzen) Fenster? .makeKeyAndVisible() – vanquish

+0

Wenn es bereits funktioniert, sollten Sie Ihre eigene Antwort und markieren Sie es aufgelöst: D – Tj3n

+0

sicher werde ich das tun. – vanquish

0

Hinzufügen von Code unten zu navToHome() & navToSignin() in AppDelegate das Problem behoben werden.

window = UIWindow(frame: UIScreen.mainScreen().bounds)  
window?.makeKeyAndVisible()