IOS Swift - 导航到没有情节提要的主屏幕

Posted

技术标签:

【中文标题】IOS Swift - 导航到没有情节提要的主屏幕【英文标题】:IOS Swift- Navigate to Home screen without Storyboard 【发布时间】: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 不,我不使用它 【参考方案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()

【讨论】:

以上是关于IOS Swift - 导航到没有情节提要的主屏幕的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 在没有情节提要的情况下展开 segue

tableview 没有用导航栏填满情节提要中的整个屏幕

没有情节提要的 TableView Cell 的 iOS Swift Segue

ios swift故事板和xibs

IOS/Xcode:故事板屏幕变黑

将单独的 xib 视图控制器加载到情节提要导航中[重复]