如何在UITabBarController中切换标签?

时间:2010-06-18 17:24:29

标签: iphone objective-c cocoa-touch uitabbarcontroller

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

正如我在代码中看到的那样,标签控制器下只有2个视图控制器。

您正试图选择第四个......

答案 2 :(得分:0)

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