2012-04-03 51 views
1

我已经使用Storyboard构建了我的应用程序。我有一个UITabBarController和一个NavigationController嵌入它。 我想用色调自定义我的应用程序,并设法为Tabbar设置自定义颜色。我能够访问rootViewController中的tabbar,但是我无法访问导航栏。无论如何,我可以轻松访问这个? 我的AppDelegate代码示例如下。iOS - 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;  
} 

回答

2

如果您正在使用导航控制器,希望他们嵌入了由标签栏控制器管理的视图控制器。

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

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

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

+0

完美。非常感谢 – 2012-04-03 23:04:42

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.