How to set the Tab bar item 1 to be selected by de

2019-01-13 19:08发布

I am new to iPhone development. I am creating a view based application. I have added a tab bar in my view (and not a tab bar controller). By setting the tag vale of the tab bar item to 1, 2, I have loaded the view for each tab bar on tabbar item click event.

I want the tab bar 1 to be selected by default. What should I do for that?

Here is my code:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
    NSLog(@"didSelectItem: %d", item.tag);
    [self activateTab:item.tag];
}

- (void)activateTab:(int)index {
    switch (index) {
        case 1:

                self.tab1ViewController =[[tab1 alloc] initWithNibName:@"tab1" bundle:nil];

            [self.view insertSubview:tab1ViewController.view belowSubview:tabbar1];
            if (currentViewController != nil)
                [currentViewController.view removeFromSuperview];
            currentViewController = tab1ViewController; 
            break;
        case 2:

                self.tab2ViewController =[[tab2 alloc] initWithNibName:@"tab2" bundle:nil];
           [self.view insertSubview:tab2ViewController.view belowSubview:tabbar1];
           if (currentViewController != nil)
                [currentViewController.view removeFromSuperview];
            currentViewController = tab2ViewController;         
            break;
        default:
            break;
    }
}

I added the the tab bar in interface builder.Can i do any thing in interface builder?

10条回答
趁早两清
2楼-- · 2019-01-13 19:13

Remember to set the delegate of the UITabBar in interface builder to be the view controller's class and also set <UITabBarDelegate> after the @interface declaration in the class.

you can then set the first tab to be highlighted as so:

- (void)viewDidLoad {
    [super viewDidLoad];

    if (tabBar.items.count >= 1) {
        [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
    }
}
查看更多
爷的心禁止访问
3楼-- · 2019-01-13 19:24

Swift 4:

override func viewDidLoad() {
    super.viewDidLoad()
    self.selectTab(at: 1, animated: false)
}
查看更多
Rolldiameter
4楼-- · 2019-01-13 19:26

if UITabBar is NOT already handled by a UITabBarController

[self.TabBar setSelectedItem:[[self.TabBar items] objectAtIndex:1]];

here TabBar is the Outlet for the UITabBar.

if UITabBar is already handled by a UITabBarController

[self.tabBarController setSelectedIndex:1];
查看更多
啃猪蹄的小仙女
5楼-- · 2019-01-13 19:28
[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];
查看更多
神经病院院长
6楼-- · 2019-01-13 19:34

Can't you just call your method to select a tab whenever you display the view? Like so:

[self activateTab:1];

To change which tab bar item is selected use:

[myTabBar setSelectedItem:myTabBarItem];

Where myTabBarItem is your UITabBarItem instance for the relevant view.

查看更多
一夜七次
7楼-- · 2019-01-13 19:34

The following works perfectly for me in Swift 1.2

myTabBar.selectedItem = myTabBarItem

where myTabBar and myTabBarItem are IBOutlets to the respective elements on the storyboard.

查看更多
登录 后发表回答