连接到导航控制器时如何将 ViewController 弹出到根目录
Posted
技术标签:
【中文标题】连接到导航控制器时如何将 ViewController 弹出到根目录【英文标题】:How to pop ViewController to root when connected to navigation controller 【发布时间】:2019-01-31 07:08:05 【问题描述】:我试图从连接到navigationController
的视图控制器调用popToRootViewController
函数。当我删除navigationController
时,我可以访问我的RootViewController
。但是如果有一个导航控制器连接到(我的情况:TableViewController)ViewController
。 popToRootViewController
将以 navigationController
结尾
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
if indexPath.section == 2 && indexPath.row == 0
Utilities.shared.clearTokens()
navigationController?.popToRootViewController(animated: false)
【问题讨论】:
【参考方案1】:据我了解,当用户单击注销时,您希望弹出到根视图控制器,您应该更改应用根控制器,您可以这样做
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let newViewController = let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let rootViewController = storyBoard.instantiateViewController(withIdentifier:"your identifier")
let appdelegate = UIApplication.shared.delegate as! AppDelegate
appdelegate.window!.rootViewController = rootViewController
因为navigationController?.popToRootViewController(animated: false)
将弹出到您当前导航堆栈上的根控制器
【讨论】:
我应该在哪里写这个。在 appDelegate 中? 在 didSelectRowAt 中替换这个 navigationController?.popToRootViewController(animated: false) 添加这一行时我得到了相同的结果。我们可以实现这个逻辑吗?navigationController.navigationController?.popToRootViewController(animated: false)
(弹出直到没有导航控制器)
是的,你可以,但这不是我认为的最佳做法以上是关于连接到导航控制器时如何将 ViewController 弹出到根目录的主要内容,如果未能解决你的问题,请参考以下文章