2016-07-26 5 views
0

인증 용 파이어베이스를 사용합니다. 사용자가 로그인하면 탭 컨트롤러로 홈 화면으로 이동하고 싶습니다.IOS 스위프트 - 스토리 보드없이 홈 화면으로 이동

앱 위임 기능

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

내가 처음으로 로그인하면 잘 작동 나는 홈 화면으로 이동 할 수 있어요. 하지만 앱을 다시 시작하면 홈 화면으로 이동할 수 없습니다. print Statements print ("viewWillAppear") & print ("navToHome")가 실행되지만 SigninNewVC에 남아 있습니다. 내가 뭘 잘못하고 있는지 모르겠다. 다음은 내 탭 표시 줄 클래스

클래스 CustomTabBar입니다 : UITabBarController가 {

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

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

    viewControllers = [newHomeTab] 

} 
} 

는 친절하게 내가 뭘 잘못 알려 주시기 바랍니다.

+0

viewcontroller에는 xib 또는 스토리 보드를 사용합니까? – Tj3n

+0

@ Tj3n 아니오 사용하지 마십시오 – vanquish

답변

0

난 당신이 CustomTabBar(nibName: nil, bundle:nil) 같은 것을 사용하고 위임이 문제를 해결() & navToSignin() 응용 프로그램에 navToHome에 코드 아래에 추가 loadView:

+0

그게 작동하지 않습니다. 하지만 navigateHome() 및 navToSignin() App Delegate 코드에 아래 코드를 추가하여 문제를 해결할 수있었습니다. 어쨌든 고맙습니다. window = UIWindow (frame : UIScreen.mainScreen(). bounds) window? .makeKeyAndVisible() – vanquish

+0

이미 작동하는 경우 자신의 대답을 작성하고 해결 표시해야합니다. D – Tj3n

+0

그렇게 할 것입니다. – vanquish

0

을의에 하위 뷰를 추가해야합니다, 당신은 잘못 VC를 insantiated 생각합니다.

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