在主故事板中设置根视图控制器

时间:2021-01-22 09:58:40

标签: ios swift xcode

main.storyboard

所以我有这个故事板,如果他没有登录,我希望向用户显示登录视图控制器,否则显示选项卡视图控制器。 这是我在应用程序委托中的代码:

`

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:                                       [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    FirebaseApp.configure()
    UITabBar.appearance().tintColor = .white
    
    // check user
    let authListener = Auth.auth().addStateDidChangeListener { auth, user in
        if user != nil {
            print("USER IS NOT NIL")
            userService.observeUserProfile(uid: user!.uid) { userProfile in
                userService.currentUserProfile = userProfile
            }
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let vc = storyboard.instantiateViewController(withIdentifier: "TabBarVC") as! UITabBarController
            self.window = UIWindow(frame: UIScreen.main.bounds)
            self.window?.rootViewController = vc
            self.window?.makeKeyAndVisible()
            
        } else {
            print("USER IS NIL")
            userService.currentUserProfile = nil
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let vc = storyboard.instantiateViewController(withIdentifier: "FirstVC") as! UIViewController
            vc.modalPresentationStyle = .fullScreen
            self.window = UIWindow(frame: UIScreen.main.bounds)
            self.window?.rootViewController = vc
            self.window?.makeKeyAndVisible()
        }
    }
}

` 我的问题是,如果用户没有登录,它看起来像这样:

the login screen

如您所见,即使我在应用程序委托中指定了该视图,该视图也不是全屏的,因此用户可以简单地关闭它并进入主屏幕。同样在选项卡视图控制器中,我的主屏幕有一个正在播放的视频,登录屏幕也在后台有一个正在播放的视频,两个视频同时播放 XD。欢迎提供任何提示。

3 个答案:

答案 0 :(得分:1)

更改故事板--> 视图控制器---> 属性检查器---> 将显示从自动更改为全屏

答案 1 :(得分:0)

首先选择所有 ViewController 并在模拟指标中从全屏更改演示模式自动。

在 rootViewController 中添加了 UINavigationController

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "TabBarVC") as! UITabBarController
let navigationController = UINavigationController(rootViewController: vc)
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = navigationController
vc.navigationController?.isNavigationBarHidden = true
self.window?.makeKeyAndVisible()

答案 2 :(得分:0)

    let nav = UINavigationController()
    nav.navigationBar.isHidden = true

    //your Controller 
    let first = Router.shared.splashVC()
    let third = Router.shared.CustomTabbarVC()

    third.selectedIndex = 0

    //add multiple controller in array 

    nav.viewControllers = [first,third]
    UIApplication.shared.keyWindow?.rootViewController = nav
    UIApplication.shared.keyWindow?.makeKeyAndVisible()