如何在 UITabBarController 中切换选项卡?

发布于 2024-09-05 21:33:16 字数 590 浏览 2 评论 0原文

我有一个从 RootViewController 以模态方式呈现的 UITabBarController:

stvTabBarController = [[UITabBarController alloc] init];
stvTabBarController.delegate = self;
stvTabBarController.viewControllers = [NSArray arrayWithObjects:stvNavController, scheduleNavController, nil];
stvTabBarController.selectedViewController = stvNavController;

[self presentModalViewController:stvTabBarController animated:YES];

如何从 stvNavController 切换选项卡?我不能这样做:

self.tabBarController.selectedIndex = 3;

因为我没有对 stvNavController 中的 tabBarController 的引用。

I have a UITabBarController that is being presented modally from a RootViewController:

stvTabBarController = [[UITabBarController alloc] init];
stvTabBarController.delegate = self;
stvTabBarController.viewControllers = [NSArray arrayWithObjects:stvNavController, scheduleNavController, nil];
stvTabBarController.selectedViewController = stvNavController;

[self presentModalViewController:stvTabBarController animated:YES];

How can I switch tabs from stvNavController? I can't do:

self.tabBarController.selectedIndex = 3;

because I don't have a reference to the tabBarController in the stvNavController.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

抹茶夏天i‖ 2024-09-12 21:33:16

检查 stvNavController 的 parentViewController 属性的值 - 它应该是对选项卡栏控制器的引用。

Check the value of stvNavController's parentViewController property—it should be a reference to the tab bar controller.

蓝眸 2024-09-12 21:33:16

正如我在代码中看到的,选项卡控制器下只有 2 个视图控制器。

您正在尝试选择第四个...

As I see in your code there are only 2 view controllers under the tab controller.

You are trying to select the fourth one...

场罚期间 2024-09-12 21:33:16

1:添加UIApplicaition扩展

    extension UIApplication {

/*function will return reference to tabbarcontroller */

func tabbarController() -> UIViewController? {

    guard let vcs = self.keyWindow?.rootViewController?.childViewControllers else { return nil }
    for vc in vcs {
        if  let _ = vc as? TabBarViewController {
            return vc
        }
    }
    return nil
}}

2:获取tabbarcontroller的引用

    guard let tabbarController = UIApplication.shared.tabbarController() as? TabBarViewController else { return }
   tabbarController.selectedIndex = 3

1:Add UIApplicaition Extension

    extension UIApplication {

/*function will return reference to tabbarcontroller */

func tabbarController() -> UIViewController? {

    guard let vcs = self.keyWindow?.rootViewController?.childViewControllers else { return nil }
    for vc in vcs {
        if  let _ = vc as? TabBarViewController {
            return vc
        }
    }
    return nil
}}

2: Get the reference of tabbarcontroller

    guard let tabbarController = UIApplication.shared.tabbarController() as? TabBarViewController else { return }
   tabbarController.selectedIndex = 3
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文