iphone - UITabBarController - 如何访问 View Controller ?

标签 iphone uiviewcontroller uinavigationcontroller uitabbarcontroller

我有一个uitabbarcontroller,其中包含多个选项卡和viewController。 我试图循环浏览 View Controller 以找到正确的 Controller 并调用一种方法。 但是我每次循环时得到的 View Controller 的类型是 UINavigationController。那么我怎样才能简单地访问我的 tabBar 中的 View Controller 呢?

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

最佳答案

您很可能在选项卡的根目录中有 UINavigationController,因此您需要做的是访问 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];
     }
}

关于iphone - UITabBarController - 如何访问 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4306704/

相关文章:

iphone - 使用 block 从后台线程加载图像

iphone - 企业 iPad 应用程序分发

iphone - 在基于导航的应用程序中拥有 UINavigationController 的最佳实践?

ios - 在 View Controller 之间来回切换

ios - 整个应用程序中只有一个 View 上的导航栏

iOS 7 导航栏样式看起来像导航 Controller 导航栏

ios - 无法在 iPhone 中获取密码 UItextfield,但在模拟器中可以

iphone - 实现 Mobclix 时出错

ios - 我如何关闭模态转场然后将转场推送到新的 View Controller

iphone - 将 UIViewController 滑动到另一个 View 上