ios - 重新打开选项卡时返回视图层次结构中的初始 ViewController
问题描述
我目前遇到UITabBarController
s 和UINavigationControllers
.
假设我有 2ViewControllers
个UITabBar
:
菜单一
菜单二
在MenuOne
我有一个指向新的按钮ViewController
;PageOne
.
如果我导航到第一个选项卡 ( MenuOne
),然后单击带有 push segue to 的按钮PageOne
,则选项卡栏仍然存在。如果我点击第二个选项卡 ( MenuTwo
) 然后返回MenuOne
,我将返回到PageOne
我在该视图层次结构中停止的位置。
我的理解是,这是 Apple 的意图,这就是UITabBarControllers
使用.UINavigationControllers
MenuOne
ViewController
为了澄清,这就是现在的过程:
MenuOne
> *点击按钮* > PageOne
> *点击标签* > MenuTwo
> *点击标签* >PageOne
这就是我希望它的工作方式:
MenuOne
> *点击按钮* > PageOne
> *点击标签* > MenuTwo
> *点击标签* >MenuOne
有谁知道我该如何解决这个问题?
解决方案
您可以像这样创建自定义UITabBarController
:
class MyTabBarController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
self.delegate = self
}
// when a controller is selected...
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if let vc = viewController as? UINavigationController {
// pop the navigation controller to root VC
vc.popToRootViewController(animated: false)
}
}
}
在情节提要中,将您的类设置UITabBarController
为MyTabBarController
。
推荐阅读
- c# - 如何使矩形停留在图片框上的某个位置并缩放
- azure-devops - 从 Azure kubernetes 集群中托管的 grafana 发送电子邮件警报
- tensorflow - TensorRT int8 模型装载中止
- dart - 如何从扩展类覆盖 toMap 方法
- sql - 使用 Powershell 更改数据收集器集中的“运行方式”属性
- python - json2html 模块的结果不正确
- python - 尝试在 Jupyter Notebook 中每小时运行一个 python 脚本,持续 24 小时
- github - 如何在 GitHub 中找到行数少于 N 的项目?
- c++ - 如何在不使用全局变量的情况下将第二个向量传递给 C++ STL 中 sort() 函数的第三个参数的函数?
- android - 弃用 Android 嵌入式浏览器上的 FB 登录支持