我使用iOS5的故事板,我的初始视图控制器是TabBarController
,它有四个与view1&view2&view3&view4相关联的关系,那么,我该如何获取view3的视图控制器?
我尝试了:
[[[[self.window.rootViewController navigationController] tabBarController] viewControllers] objectAtIndex:2];
但它不起作用...
我使用iOS5的故事板,我的初始视图控制器是TabBarController
,它有四个与view1&view2&view3&view4相关联的关系,那么,我该如何获取view3的视图控制器?
我尝试了:
[[[[self.window.rootViewController navigationController] tabBarController] viewControllers] objectAtIndex:2];
但它不起作用...
你说你的初始(根)视图控制器是UITabBarController,但你指的是一个带有导航控制器和标签栏控制器的视图控制器。你是否在你的视图控制器层次结构中混淆了?
编辑:
如果你的根视图控制器实际上只是一个标签栏控制器,并且你想获取第三个标签,则代码如下:
[[((UITabBarController *)self.window.rootViewController) viewControllers] objectAtIndex:2];
[self.tabBarController setSelectedIndex:2];
尝试这个方法
在任何视图控制器中
YourViewController *yourViewController= (YourViewController*) [self.tabBarController.viewControllers objectAtIndex:3];
这将返回您的那个视图控制器对象。将其转换为您的视图控制器,您就可以使用它了。快跑吧!
Swift 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
此外,您可以检查可见的视图控制器
if let nav = viewC as? UINavigationController {
if nav.visibleViewController is YourViewControllerName{
// Do Code
}
}
UIViewController *loginViewController=self.window.rootViewController;
UITabBarController *controller=loginViewController.tabBarControllerObj;
UIViewController *selectedController=controller.selectedViewController;
您想获取选定的视图控制器。
如果要获取所有视图控制器,只需替换
NSArray *viewControllers = [controller viewControllers];