从我的故事板上的另一个视图中获取tabbarcontroller

Alo*_*ius 7 objective-c storyboard uitabbarcontroller ios

在我的代表中,我试图选择我的,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];
Run Code Online (Sandbox Code Playgroud)

在我的界面构建器中,我的TabBarController设置有一个Segue名称:mainView(这是它所在的TabBarController位置).

我怎么能选择我的TabBarController

Luc*_*rdo 11

首先,您必须在视图层次结构中知道TabBarController的位置.如果它不是您的根控制器,请找到调用TabBarController的UIViewController,并通过segue或类似的东西获取它的引用.

什么可能为你工作,它访问tabBarController的属性viewDidLoad在里面tabViewController一个选项卡中的第一个孩子的UIViewController.tabBarController的所有子ViewControllers都具有此属性.

例如,假设tabBar中显示的第一个UIViewController是MyViewController,执行如下操作:

- (void)viewDidLoad
{
   UITabBar *tabBar = self.tabBarController.tabBar;
   UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
   UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1]; 
}
Run Code Online (Sandbox Code Playgroud)


Jiř*_*lka 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;
Run Code Online (Sandbox Code Playgroud)