从单独的导航控制器切换 TabBar 项目
Switch TabBar Item from separate Navigation Controller
在我的应用程序中,我有 TabBar Controller 和 Navigation Controller 以及一个 View Controller,它们彼此没有连接。
我在我的应用程序中将 TabBar 控制器用作根 vc,并将其他导航控制器用作滑入 TabBar 控制器顶部的侧边菜单。为了制作菜单,我使用了这个 repo - SideMenu
问题:如何从我的菜单中切换 TabBar 项目?简单地在 MenuViewController 中调用 tabBarController?.selectedIndex = 1
什么都不做。
到目前为止我做了什么:
- 作为临时工作解决方案,我使用通知中心在 TabBar Controller 提供的 ViewController 中注册选项卡切换,但我认为这不是个好主意,因为我有 5 VC 在里面,只有其中一个我有切换标签的功能。
- 通过 Storyboard ID 调用 TabBar 然后使用它也没有帮助。
- 扩展
UITabBarController
class 也没有帮助(可能做错了)
在我的应用程序中,我有 MainTabBarController
,它几乎总是 root。我使用静态变量访问共享变量。
class MainTabBarController: UITabBarController, UITabBarControllerDelegate {
// MARK: - Variables
public static var shared: MainTabBarController? {
set {
UIApplication.shared.window.rootViewController = newValue
}
get {
guard let mainTabBarController = UIApplication.shared.window.rootViewController as? MainTabBarController else { return nil }
return mainTabBarController
}
}
}
所以我可以随时更改。
MainTabBarController.shared?.selectedIndex = 0
只需在 MenuViewController 中调用 tabBarController?.selectedIndex = 1 什么都不做。
这应该行不通,因为您的层次结构。
在我的应用程序中,我有 TabBar Controller 和 Navigation Controller 以及一个 View Controller,它们彼此没有连接。
我在我的应用程序中将 TabBar 控制器用作根 vc,并将其他导航控制器用作滑入 TabBar 控制器顶部的侧边菜单。为了制作菜单,我使用了这个 repo - SideMenu
问题:如何从我的菜单中切换 TabBar 项目?简单地在 MenuViewController 中调用 tabBarController?.selectedIndex = 1
什么都不做。
到目前为止我做了什么:
- 作为临时工作解决方案,我使用通知中心在 TabBar Controller 提供的 ViewController 中注册选项卡切换,但我认为这不是个好主意,因为我有 5 VC 在里面,只有其中一个我有切换标签的功能。
- 通过 Storyboard ID 调用 TabBar 然后使用它也没有帮助。
- 扩展
UITabBarController
class 也没有帮助(可能做错了)
在我的应用程序中,我有 MainTabBarController
,它几乎总是 root。我使用静态变量访问共享变量。
class MainTabBarController: UITabBarController, UITabBarControllerDelegate {
// MARK: - Variables
public static var shared: MainTabBarController? {
set {
UIApplication.shared.window.rootViewController = newValue
}
get {
guard let mainTabBarController = UIApplication.shared.window.rootViewController as? MainTabBarController else { return nil }
return mainTabBarController
}
}
}
所以我可以随时更改。
MainTabBarController.shared?.selectedIndex = 0
只需在 MenuViewController 中调用 tabBarController?.selectedIndex = 1 什么都不做。
这应该行不通,因为您的层次结构。