2016-07-26 50 views
0

我用火力進行身份驗證。一旦用戶登錄,我想用Tab控制器移動到主屏幕。IOS Swift-導航至主屏幕,而不故事板

應用委託功能

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") 
     } 
    } 
} 

當我登錄的第一次,它工作正常,我能夠導航到主屏幕。但是,如果我重新啓動應用程序,我無法導航到主屏幕。它停留在SigninNewVC雖然打印報表打印(「viewWillAppear中」)&打印(「navToHome」)執行。不知道我做錯了什麼。下面是我的標籤欄類

類CustomTabBar:的UITabBarController {

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

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

    viewControllers = [newHomeTab] 

} 
} 

請讓我知道我做錯了。

+0

您是否對視圖控制器使用xib或storyboard? – Tj3n

+0

@ Tj3n不,我不使用它 – vanquish

回答

0

我想你insantiated VC的錯誤,你應該使用類似CustomTabBar(nibName: nil, bundle:nil)並添加子視圖,在它的loadView:

+0

那dd不起作用。但我可以通過將下面的代碼添加到App Delegate中的navToHome()和navToSignin()來修復它。無論如何,謝謝你。 window = UIWindow(frame:UIScreen.mainScreen()。bounds) window?.makeKeyAndVisible() – vanquish

+0

如果它已經工作,你應該讓你自己的答案並將其標記爲已解決:D – Tj3n

+0

當然,我會這樣做。 – vanquish

0

添加以下代碼navToHome在應用程序()& navToSignin()代表固定的問題。

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