UITabBarController - 如何访问视图控制器?

ary*_*axt 10 iphone uitabbarcontroller uiviewcontroller uinavigationcontroller

我有一个uitabbarcontroller,它包含多个选项卡和viewControllers.我试图循环通过视图控制器找到正确的一个并调用方法.但我得到的视图控制器的类型,每次我通过循环是一个UINavigationController.那么我怎样才能简单地访问tabBar中的视图控制器?

for (UIViewController *v in self.tabBar.viewControllers)
{
     if ([v isKindOfClass:[MyViewController class]])
     {
          MyViewController *myViewController = v;
          [v doSomething];
     }
}
Run Code Online (Sandbox Code Playgroud)

Cam*_*ies 20

您很可能在选项卡的根目录中有UINavigationControllers,因此您要做的是访问UINavigationController显示的ViewController.

尝试将代码更改为以下内容:

for (UIViewController *v in self.tabBar.viewControllers) {

     UIViewController *vc = v;

     if ([v isKindOfClass:[UINavigationController class]]) {
         vc = [v visibleViewController];
     }

     if ([vc isKindOfClass:[MyViewController class]]) {
          MyViewController *myViewController = vc;
          [vc doSomething];
     }
}
Run Code Online (Sandbox Code Playgroud)