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.

Trevor Gerzen
2,749 PointsA Storyboard with a Tab Bar Controller
For this code challenge:
We just saw how to change tabs by tapping on them, but we can also do this programmatically using the 'selectedIndex' property of UITabBarController. The tab bar controller in the example below has three tabs. Set the selected tab as the third tab using either dot-notation or the 'setSelectedIndex:' method. Note: The tabs are indexed just like arrays, meaning the first is at index zero.
I understand the concept but I don't know how to start. I tried looking up the documentation but there are a few pieces of information about the syntax that I just don't know. Can anyone help with this?
7 Answers

Trevor Gerzen
2,749 PointsThanks! I also realized that I was forgetting the brackets.
[self.tabBarController setSelectedIndex:2];

Trevor Gerzen
2,749 Points? This guy == super n00b

Andrew Hawkins
10,963 PointsI had a similar question and found this thread helpful. Not a noob, just trying to learn.

Trevor Gerzen
2,749 PointsGlad it helped. To clarify I was talking about myself. I am totally new to all of this.

Jonathan Fernandez
8,325 PointsAt first I cringed hard when I saw this comment.. Then I saw the name and realized you were criticizing yourself. ; p

Nathan F.
30,773 PointsWell, you have two contexual clues here. You've got a tab bar controller, which has a property for the selected index/tab, which can be set by accessing the property directly or by sending a message with setSelectedIndex. You've also got a set of tabs indexed like an array.
Can you clarify what exactly you're confused about? I think I could give you the answer, but that wouldn't help as much as trying to point you in the right direction.

Trevor Gerzen
2,749 PointsAm I missing the whole part about setting it based on the array? I was thinking that because
#import "MainViewController.h"
#import "UITabBarItem.h"
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *tabBarItems = self.tabBarController.tabBar.items;
// Add your code below! The property for MainViewController's
// tab bar controller is named 'tabBarController'.
}
@end
NSArray *tabBarItems was created that I could just setSelectedIndex

Nathan F.
30,773 PointsYou're pretty close. But tabBarItems is a collection/array of the items on the bar, which have properties like title, image, etc. They don't determine which one is selected. You want to tell the controller which one is selected.
And yeah, I can see how NSArray *tabBarItems being there would add some confusion into thinking that you're supposed to do something with it.

Nathan F.
30,773 PointsHappy I could help!

Trevor Gerzen
2,749 PointsMy guess was to use:
self.tabBarItems setSelectedIndex:2;
but I'm missing something.
I was also trying
self.tabBarItems.selectedIndex = 2;
also to no avail.
Benjamin McMahan
6,679 PointsBenjamin McMahan
6,679 PointsI really found this one unnecessarily confusing and not at all covered in the video. There is an NSArray presented that has nothing to do with this part of the challenge and at this point we have no concept of referencing the UITabBarController. Hate when I have to break a good flow to Google something like this and skim through posts.