12

我使用iOS5故事板,我的初始视图控制器是TabBarController,view1&view2&view3&view4有四种关系,那么,我怎样才能得到view3的视图控制器呢?

我试过:

[[[[self.window.rootViewController navigationController] tabBarController] viewControllers] objectAtIndex:2];

但它不起作用...

4

5 回答 5

35

您说您的初始(根)视图控制器是 UITabBarController 但您指的是带有导航控制器和标签栏控制器的视图控制器。您是否在视图控制器层次结构中混淆了?

编辑:

如果您的根视图控制器实际上只是一个选项卡栏控制器,并且您想获得第三个选项卡,则代码如下:

[[((UITabBarController *)self.window.rootViewController) viewControllers] objectAtIndex:2];
于 2012-05-21T16:39:20.553 回答
9
[self.tabBarController setSelectedIndex:2];
于 2012-12-04T10:41:54.777 回答
8

试试这个方法

在任何视图控制器中

 YourViewController *yourViewController= (YourViewController*)  [self.tabBarController.viewControllers objectAtIndex:3];

这将返回您的视图控制器对象。将其转换为您的视图控制器,您就可以使用它了。跑就跑

于 2013-11-11T14:33:42.333 回答
4

斯威夫特 4.0

let viewC = self?.tabBarController.viewControllers.first // will give single Navigation Controller on index 0
let viewC = self?.tabBarController?.viewControllers// will give array of Navigation Controller

此外,您可以检查 Visible ViewController

if let nav = viewC as? UINavigationController {
   if nav.visibleViewController is YourViewControllerName{
        // Do Code
     }
}
于 2018-02-06T11:34:41.733 回答
3
   UIViewController *loginViewController=self.window.rootViewController;

   UITabBarController *controller=loginViewController.tabBarControllerObj;

   UIViewController *selectedController=controller.selectedViewController;

从中您将获得选定的视图控制器。

要获取所有视图控制器,只需替换

NSArray *viewControllers = [controller viewControllers];
于 2014-01-23T14:41:54.653 回答