繁体   English   中英

弹出到根视图控制器

[英]popping to root view controller

我有一个警报,其“确定”按钮应弹出到根视图控制器。

这是我正在使用的结构:

[选项卡视图控制器]-> [导航控制器]-> [视图控制器] -> [视图控制器] -> [导航控制器]-> [视图控制器]-> [警告]

我希望警报上的“确定”按钮将我带到我上面已加粗的视图控制器。 当我执行下面的代码时,我回到上面斜体的视图控制器,这并不是我想要的。 任何帮助将非常感激! 谢谢!

alert.addAction(UIAlertAction(title: OK, style: UIAlertActionStyle.default, handler: { action in

    DispatchQueue.main.async(execute: {
        _ = self.dismiss(animated: true, completion: nil)

    })
}))

我还尝试了使用特殊方法弹出到根视图控制器,但是遗憾的是,这没有用。

UINavigationViewController类具有方法func popToRootViewController(animated: Bool) -> [UIViewController]? 文件

您可以只在第一个导航视图控制器上调用此方法。 (注意:因此,您需要引用此导航视图控制器或委托以调用此方法)

如果使用情节提要,则可以使用segue展开到正确的视图控制器。 因此请参阅这篇文章

您需要浏览导航堆栈的特定索引。 例如:-首先获取导航堆栈中存在的视图控制器的数量。 弹出特定索引。 在您的情况下,它的index可能是0:

let arr_controller:[UIViewController] = (self.navigationController?.viewControllers)!
_ = self.navigationController?.popToViewController(arr_controller[0], animated: true)
let tabVc = (UIApplication.shared.delegate as! AppDelegate).window?.rootViewController as? UITabBarController
tabVc?.selectedViewController?.navigationController?.popToRootViewController(animated: true)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM