IOS Swift - 无需 Storyboard 即可导航至主屏幕

标签 ios swift appdelegate

我使用 firebase 进行身份验证。用户登录后,我想使用选项卡 Controller 移动到主屏幕。

应用程序代理函数

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
}

登录NewVC

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("viewWillAppear")& print("navToHome"),它仍保留在 SigninNewVC 中。不知道我做错了什么。下面是我的标签栏类

类 CustomTabBar:UITabBarController {

override func viewDidLoad()
{
    super.viewDidLoad()

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

    viewControllers = [newHomeTab]

}
}

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

最佳答案

我认为你错误地实例化了 VC,你应该使用像 CustomTabBar(nibName: nil, bundle:nil) 这样的东西,并在它的 loadView:

关于IOS Swift - 无需 Storyboard 即可导航至主屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38580899/

相关文章:

swift - Swift 3.1 中初始化参数的参数标签

ios - 如何知道 UIScrollView 是否触及顶部 ScrollView 与另一个 View 的 CGPoint 相交

ios - 从应用委托(delegate)调用 UIViewController 方法

ios - 从App Delegate检查屏幕上的UIAlertViews

ios - 如何消除SwiftUI Form中Section上方的空间?

iphone - keyboardWillShow 调用了两次

IOS:屏蔽图像以考虑视网膜比例因子

android - 我需要在 Xamarin Forms 按钮内设置格式化文本(两种不同大小)

swift - 如何在 Swift 中从系统获取工作日数组?

ios - UIView transitionFromView : toView: animation not working.