1

我已经使用 Storyboards 构建了我的应用程序。我有一个 UITabBarController 和一个 NavigationController 嵌入它。我正在尝试使用色调自定义我的应用程序,并且我已经成功地为 Tabbar 设置了自定义颜色。我能够从 rootViewController 访问标签栏,但是我无法访问导航栏。无论如何我可以轻松访问它吗?我的 AppDelegate 代码示例如下。

谢谢

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:  (NSDictionary *)launchOptions
{
    self.tabBarController = (UITabBarController*)self.window.rootViewController;
    UITabBar *tabBar = self.tabBarController.tabBar;
    [tabBar setSelectedImageTintColor:[UIColor greenColor]];
    tabBar.tintColor = [UIColor colorWithRed:0.4 green:0.522 blue:0.129 alpha:1];

    //This bit doesnt work
    UINavigationController *navCon = self.tabBarController.navigationController;
    navCon.navigationBar.tintColor = [UIColor colorWithRed:0.384 green:0.259 blue:0.161     alpha:1];

    return YES;    
}
4

2 回答 2

2

如果您正在使用导航控制器,则希望它们嵌入由选项卡栏控制器管理的视图控制器。

尝试NSLog(@"%@", [self.tabBarController viewControllers]);查看它是否列出了导航控制器或您的自定义控制器。例如,我创建了两个由我的标签栏触发的视图控制器,一个有导航,一个没有导航,上面的行显示:

 (
     "<UINavigationController: 0x6a35f20>",
     "<SecondViewController: 0x6a39500>" )

所以,我可以得到我的[[self.tabBarController viewControllers] objectAtIndex:0]

于 2012-04-03T22:57:18.590 回答
2

假设您没有使用 IBOutlet,我建议您可以将它们与 XIB 文件一起使用。例如,在头文件中:

IBOutlet UINavigationBar *aNavBar;

然后在 .m 中,切换:

UINavigationController *navCon = self.tabBarController.navigationController;
navCon.navigationBar.tintColor = [UIColor colorWithRed:0.384 green:0.259 blue:0.161     alpha:1];

和:

[aNavBar setTintColor:[UIColor colorWithRed:0.384 green:0.259 blue:0.161     alpha:1]];

你去吧!我做的很快,所以告诉我它是否有效。
-贾斯汀 A。

于 2012-04-03T23:06:24.170 回答