在我的代表中,我正在尝试选择我的TabBarController
,以便我可以使用不同的背景来设置它。但问题是我的TabBarController
不在rootView ..
我目前的代码:
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UITabBar *tabBar = tabBarController.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
在我的界面构建器中,我的TabBarController
设置了一个Segue名称:mainView(这是TabBarController
所在的位置)。
我如何选择TabBarController
?
答案 0 :(得分:11)
首先,您必须在视图层次结构中知道TabBarController的位置。如果它不是您的根控制器,请找到调用TabBarController的UIViewController,并通过segue或类似的东西获取它的引用。
什么可能对您有用,它正在您的tabViewController中的选项卡中访问第一个子UIViewController的tabBarController
中的viewDidLoad
属性。 tabBarController的所有子ViewControllers都有这个属性。
例如,假设tabBar中显示的第一个UIViewController是MyViewController,请执行以下操作:
- (void)viewDidLoad
{
UITabBar *tabBar = self.tabBarController.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
}
答案 1 :(得分:7)
如果你想从一个视图中获取它
//if Custom class
TabBarController *tabBar = (TabBarController *) self.tabBarController;
//if Custom class with Navigation Controller
TabBarController *tabBar = (TabBarController *) self.navigationController.tabBarController;
//if Not Subclassed
UITabBarController *tabBar = (UITabBarController *) self.tabBarController;
//if Not Subclassed with Navigation Controller
UITabBarController *tabBar = (UITabBarController *) self.navigationController.tabBarController;