【问题标题】:IOS Swift- Navigate to Home screen without StoryboardIOS Swift - 导航到没有情节提要的主屏幕
【发布时间】:2016-07-26 04:12:15
【问题描述】:

我使用 firebase 进行身份验证。用户登录后,我想使用 Tab 控制器移动到主屏幕。

应用代理功能

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 语句 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]

}
}

请让我知道我做错了什么。

【问题讨论】:

  • 你使用 xib 还是 storyboard 作为 viewcontroller?
  • @Tj3n 不,我不使用它

标签: ios swift appdelegate


【解决方案1】:

我认为你错误地实例化了 VC,你应该使用类似 CustomTabBar(nibName: nil, bundle:nil) 的东西并将你的子视图添加到它的 loadView:

【讨论】:

  • 那个 dd 不起作用。但是我能够通过将以下代码添加到 App Delegate 中的 navToHome() 和 navToSignin() 来修复它。还是谢谢你。 window = UIWindow(frame: UIScreen.mainScreen().bounds) window?.makeKeyAndVisible()
  • 如果它已经工作了,你应该做出自己的答案并将其标记为已解决:D
  • 我一定会这样做的。
【解决方案2】:

将以下代码添加到 App Delegate 中的 navToHome() 和 navToSignin() 修复了该问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多