Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

iOS Implementing Designs for iPhone Customizing Table View Controllers Styling the Tab Bar

Devin Scheu
Devin Scheu
66,191 Points

IOS Help

Question: Using the UITabBarItem's appearance proxy, set the text color for both selected and unselected tabs. Hint: use the 'setTitleTextAttributes:forState' method with the NSDictionary provided and 'UIControlStateNormal' as as the state parameter.

I'm so stuck on this one.


#import "AppDelegate.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Customize the nav bar
    UIImage *backgroundImage = [UIImage imageNamed:@"navBarBackground"];
    [[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
    [[UINavigationBar appearance] setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

    // Customize the tab bar
    NSDictionary *titleTextAttributes = [[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor, nil
    ] forState: UIControllStateNormal];
    return YES;


2 Answers

150,854 Points

Hi there. I'll give you a walkthrough of how I perceive this challenge:

You'll want to write a new statement, with the specific intent of utilizing the appearance proxy (for an example of how to utilize the appearance proxy on UITabBarItem, you might want to check out around 2:15 into the video for this objective.) My hunch is that the 'with the NSDictionary provided' part of the challenge instructions is what threw you off: we are not changing the declaration statement itself of that dictionary, but we will be doing some setting...

Next up, the challenge asks us to consider the 'setTitleTextAttributes:forState' method, and use 'UIControlStateNormal' as the parameter of this state. For an example of how to use this method and specify the state parameter, consider the following:

[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor, nil] forState:UIControlStateNormal];

Hope this helps.