从我的故事板上的另一个视图中获取tabbarcontroller
在我的代表中,我正在尝试选择我的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
?
首先,您必须在视图层次结构中知道TabBarController的位置。 如果它不是你的根控制器,找到调用TabBarController的UIViewController,并通过segue或类似的方式获取它的引用。
什么可能对你有用,它正在tabViewController内的一个选项卡中访问第一个子UIViewController的viewDidLoad
中的tabBarController属性。 tabBarController的所有子ViewControllers都具有此属性。
例如,假设tabBar中显示的第一个UIViewController是MyViewController,执行如下操作:
- (void)viewDidLoad { UITabBar *tabBar = self.tabBarController.tabBar; UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0]; UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1]; }
如果你想从一个视图中获取它
//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;