当tabbar不是root视图时更改tabbar图像

时间:2013-05-13 22:22:46

标签: ios uitabbarcontroller uitabbar

我正在考虑更改标签栏上的图片,例如

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UITabBar *tabBar = tabBarController.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2];
UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3];
tabBarItem1.title = @"Home";
tabBarItem2.title = @"Maps";
tabBarItem3.title = @"My Plan";
tabBarItem4.title = @"Settings";

我在这里遇到的问题是我的tabbarcontroller不是我的根视图,那么如何引用tabbarcontroller来更改标签图像呢?

我正在关注此帖子(Can I have more than 1 UITabBarController?)中的建议,该帖子指的是一个链接到一个或多个tabbarcontrollers的tableview。

所以我的根视图不是标签栏,但是从前一个屏幕开始加载标签栏视图。

我已经完成了这一切,初始屏幕然后是标签栏,一切正常,我只需更改标签栏上的图形,并且无法像更改标签上的所有教程那样执行此操作bar graphics使用app delegate并将tabbarcontroller称为根视图。

对此的任何帮助都非常感谢!

2 个答案:

答案 0 :(得分:2)

选项卡栏项属于每个选项卡中的各个内容视图控制器,因此您应该更改这些控制器中的选项卡项属性,而不是尝试引用选项卡栏控制器。如果您希望一旦标签栏控制器出现在屏幕上,这些更改就会显示,您需要将这些自定义设置放在其awakeFromNib或initWithCoder方法中(对于在IB中设置的控制器)。

答案 1 :(得分:0)

理查德,

首先,你引用的帖子指出这是非常糟糕的视觉设计,但无论如何,如果你需要这样做。

如何引用标签栏控制器取决于您如何实例化它。这个东西应该是相当明显的,所以我猜你正在使用xib或故事板。

无论哪种方式,当你加载第二个视图时,你将加载一个视图控制器来控制视图。只需将标签栏绑定到IB中视图控制器的属性,您就可以在视图中设置视图控制器的负载。

实际上,如果你正在使用IB(XIB或故事板),你可以在那里设置你的图标。

相关问题