如何解决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
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。