我使用的是iOS5故事板,而我的初始视图控制器是TabBarController
,与view1&有四种关系。 view2& view3& view4,那么,我该如何获得view3的视图控制器?
我试过了:
[[[[self.window.rootViewController navigationController] tabBarController] viewControllers] objectAtIndex:2];
但它不起作用......
答案 0 :(得分:31)
你说你的初始(根)视图控制器是一个UITabBarController,但你指的是一个带有带标签栏控制器的导航控制器的视图控制器。您是否在视图控制器层次结构中混淆了?
编辑:
如果你的根视图控制器实际上只是一个标签栏控制器,你想在这里得到第三个标签是代码:
[[((UITabBarController *)self.window.rootViewController) viewControllers] objectAtIndex:2];
答案 1 :(得分:9)
[self.tabBarController setSelectedIndex:2];
答案 2 :(得分:7)
试试这种方式
在任何视图控制器中
YourViewController *yourViewController= (YourViewController*) [self.tabBarController.viewControllers objectAtIndex:3];
这将返回您的视图控制器对象。将其存储到您的视图控制器,您就可以使用它了。 跑去吧
答案 3 :(得分:3)
UIViewController *loginViewController=self.window.rootViewController;
UITabBarController *controller=loginViewController.tabBarControllerObj;
UIViewController *selectedController=controller.selectedViewController;
从此您将获得选定的视图控制器。
获取所有视图控制器只需替换
NSArray *viewControllers = [controller viewControllers];
答案 4 :(得分:0)
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
此外,您可以查看Visible ViewController
if let nav = viewC as? UINavigationController {
if nav.visibleViewController is YourViewControllerName{
// Do Code
}
}