我想它可以重复,但我到处寻找并没有为我找到解决方案。
关于我的问题。我有类似的东西 open this image to see more
在我的AppDelegate中我有func
func logIn() {
let userExist = UserDefaults.standard.string(forKey: "auth_key_user")
if userExist != nil && userExist != "" {
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let whereToGo = storyboard.instantiateViewController(withIdentifier: "AllPostsOfUserTabBarController") as! AllPostsOfUserTabBarController
window?.rootViewController = whereToGo
}
}
如果用户存在,则引导我首先查看标签栏控制器内的控制器。我有导航按钮,可以注销。 我需要注销(将数据发送到服务器),然后使用文本字段和按钮转到我的第一个视图控制器,我可以再次登录。
我如何实施呢?
答案 0 :(得分:0)
注销后尝试此代码 -
DispatchQueue.main.sync() {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let loginVC = storyboard.instantiateInitialViewController()
appDelegate.window?.rootViewController = loginVC
}
希望它有所帮助!
答案 1 :(得分:0)
将此代码置于注销按钮的功能中。它会把你带回你的根控制器。
func logoutBtnClicked()
{
DispatchQueue.main.sync()
{
(send your data to server)
self.navigationController?.popToRootViewController(animated: true)
}
}
答案 2 :(得分:0)
在appdelegate中尝试此操作
登录时
self.window?.rootViewController = whereToGo
退出
func setupLoginViewController() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let loginVC: UIViewController? = storyboard.instantiateViewController(withIdentifier: "loginVCID") as? UIViewController
let navController: UINavigationController? = UINavigationController(rootViewController: loginVC!) as UINavigationController
window?.rootViewController = navController
}