popToRootViewController 未按预期工作

Posted

技术标签:

【中文标题】popToRootViewController 未按预期工作【英文标题】:popToRootViewController is not working as expected 【发布时间】:2021-01-13 07:14:14 【问题描述】:

我是 ios 开发新手。所以请帮我解决这个简单的问题。我的应用程序的初始屏幕是登录屏幕。当我正在运行或构建登录屏幕时按预期显示。但是当我按下注销按钮来使用“popToRootViewController”登录时,故事板登录屏幕显示而不是原始登录屏幕。

当我按下登录按钮导航到主屏幕时,

let mainVC = self.storyboard?.instantiateViewController(withIdentifier: "MainVC")
                        self.navigationController?.pushViewController(mainVC!, animated: true)

在主屏幕中,我有带有 5 个标签的标签控制器,最后一个标签是注销,当我按下注销时,代码如下。

let defaults = UserDefaults.standard
                defaults.removeObject(forKey: "isLoggedin")
                defaults.removeObject(forKey: "user")
                defaults.synchronize()
               self.navigationController?.popToRootViewController(animated: true)

我在想的是,当我按下注销并进入登录屏幕时,viewcontroller 代码没有被执行。我不确定它为什么会这样工作。请让我知道或帮助我解决此问题。提前谢谢..

【问题讨论】:

它是应用程序的rootviewcontroller,我不是通过代码手动调用它.. 注销按钮按下的是哪个屏幕? 你可以试试“popViewController”而不是“popToRootViewController”。 @HimanshuPatel 注销按钮在主屏幕或 mainVC.. @malli - 是否可以附加您尝试过的代码 【参考方案1】:

这是您获取 Storyboard 引用和对您的 MainVC 的引用的方式吗?

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let mainVC = storyBoard.instantiateViewController(withIdentifier: "MainVC") as! MainVC
self.navigationController?.pushViewController(mainVC, animated: true)

【讨论】:

以上是关于popToRootViewController 未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

popToRootViewController 未按预期工作

需要用 popToRootViewController 发布中间视图吗?

从另一个选项卡调用 popToRootViewController

单击按钮时的poptorootviewcontroller

popToRootViewController 在 vi​​ewWillAppear 之前被调用

如何更改 popToRootViewController 的过渡样式?