Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

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

Chase Marchione
Chase Marchione
155,055 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.