【问题标题】:How to pop ViewController to root when connected to navigation controller连接到导航控制器时如何将 ViewController 弹出到根目录
【发布时间】:2019-01-31 07:08:05
【问题描述】:

我试图从连接到navigationController 的视图控制器调用popToRootViewController 函数。当我删除navigationController 时,我可以访问我的RootViewController。但是如果有一个导航控制器连接到(我的情况:TableViewController)ViewControllerpopToRootViewController 将以 navigationController 结尾

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if indexPath.section == 2 && indexPath.row == 0 {
        Utilities.shared.clearTokens()
        navigationController?.popToRootViewController(animated: false)
    }
}

【问题讨论】:

    标签: ios swift uiviewcontroller uinavigationcontroller popviewcontroller


    【解决方案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)(弹出直到没有导航控制器)
    • 是的,你可以,但这不是我认为的最佳做法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多