【问题标题】:How to switch tabs in UITabBarController?如何在 UITabBarController 中切换选项卡?
【发布时间】:2011-03-05 13:10:29
【问题描述】:

我有一个从 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。

【问题讨论】:

    标签: iphone objective-c cocoa-touch uitabbarcontroller


    【解决方案1】:

    检查 stvNavController 的 parentViewController 属性的值——它应该是对标签栏控制器的引用。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        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
        

        【讨论】:

          猜你喜欢
          • 2014-08-12
          • 2023-03-15
          • 2015-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多