Rootview控制器无法与Tabbar Controller Swift 4.2一起使用

问题描述

我有登录页面,我试图在其中推送每个ViewController,并在成功验证后立即尝试使用代码设置根视图

UIApplication.shared.delegate?.window??.rootViewController = UIStoryboard.init(name: "Main",bundle: nil).instantiateViewController(withIdentifier: "Some") as! Some

上面的代码不起作用,并且注销还通过设置根视图控制器进行设置,但是这些命令不起作用。请帮帮我。预先感谢。

Login 1st page(navigationController.pushVc)-> Success Verification (setting root view controller)-> Logout(setting root view controller)

我给标签栏控制器和导航控制器都赋予了标识符。尝试了很多方法,但是找不到解决方法

也尝试了此链接https://fluffy.es/how-to-transition-from-login-screen-to-tab-bar-controller/

上面的链接与我尝试的相同。但是不能在我的项目中完成。

解决方法

我在这里复制我的方法,以便在登录和注销后切换rootViewController。我已经在AppDelegate中编写了此方法:

public func setRootVC(){
    
    if UserDefaults.standard.object(forKey: Strings.LOGGED_IN) != nil {
        let storyboard = UIStoryboard(name: "Main",bundle: Bundle.main)
        let tabbarVC = storyboard.instantiateViewController(withIdentifier: ViewControllerIdentifiers.TabbarController)
        
        self.window?.rootViewController = tabbarVC
        self.window?.makeKeyAndVisible()
    }
    else{
        let storyboard = UIStoryboard(name: "Profile",bundle: Bundle.main)
        let loginNavController = storyboard.instantiateViewController(withIdentifier: ViewControllerIdentifiers.LoginNavController) as? UINavigationController
        
        self.window?.rootViewController = loginNavController
        self.window?.makeKeyAndVisible()
    }
}

从我的viewController调用此方法:

@IBAction func signoutBtnClicked(_ sender: Any) {
    
    if UserDefaults.standard.object(forKey: Strings.LOGGED_IN) != nil {
        UserDefaults.standard.removeObject(forKey: Strings.LOGGED_IN)
    }
    self.appDelegate.setRootVC()
}

要访问'self.appDelegate,我已在我的viewController中添加了此扩展名

extension UIViewController {
var appDelegate: AppDelegate {
    return UIApplication.shared.delegate as! AppDelegate
}

}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...