Ios Rootview控制器未使用tabbar控制器Swift 4.2
我有登录页面,我尝试推送每个ViewController,在成功验证后,我尝试使用代码设置根视图Ios Rootview控制器未使用tabbar控制器Swift 4.2,ios,swift,uiviewcontroller,pushviewcontroller,rootviewcontroller,Ios,Swift,Uiviewcontroller,Pushviewcontroller,Rootviewcontroller,我有登录页面,我尝试推送每个ViewController,在成功验证后,我尝试使用代码设置根视图 UIApplication.shared.delegate?.window??.rootViewController = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Some") as! Some 上面的代码不起作用,对于注销,
UIApplication.shared.delegate?.window??.rootViewController = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Some") as! Some
上面的代码不起作用,对于注销,im也设置了根视图控制器,但这些都不起作用。请帮帮我。提前谢谢
登录第一页(navigationController.pushVc)
-->成功验证(设置根视图控制器)
-->注销(设置根视图控制器)
我已经为tabbar控制器和导航控制器提供了标识符。尝试了很多方法,但找不到解决方案
也尝试了这个链接
上面的链接与我尝试的链接相同。但在我的项目中无法执行。我正在复制我的方法,以便在登录和注销后切换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
}
}