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:35

You can set the default index of the TabBarController by setting the selectedIndex property. This can be put in viewDidLoad or Before pushing the controller if you are doing it that way. This is done only when you are using a TabBarController and Not just a TabBar.

tabBarController.selectedIndex = 1;

If you are using a TabBar without a TabBarController then you have to do it like this.

self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:1];
查看更多
霸刀☆藐视天下
3楼-- · 2019-01-13 19:37

Swift 3:

@IBOutlet weak var uiTabBarOutlet: UITabBar!

uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0] 
查看更多
Evening l夕情丶
4楼-- · 2019-01-13 19:39

For swift 3.0 if tabBar is @IBOutlet use in viewDidLoad:

tabBar.selectedItem = tabBar.items![0]
查看更多
戒情不戒烟
5楼-- · 2019-01-13 19:40

How I made it, using UITabBarDelegate:

#import "InfoSecurity.h"
#import "TabsCell.h"

@interface InfoSecurity () <UITabBarDelegate>

@property (strong, nonatomic) IBOutlet UITabBar *mainTab;

@property(weak,nonatomic) NSArray *TabArray;


@end

@implementation InfoSecurity

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

}
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{

    if (_mainTab.selectedItem.tag == 1) {
        NSLog(@"TAB 1");
    }
    else if (_mainTab.selectedItem.tag == 2) {

        NSLog(@"TAB2");

    }
    else if (_mainTab.selectedItem.tag == 3)
    {
        NSLog(@"TAB3");
    }
    else
    {
        NSLog(@"TAB NOT WORKING");
    }

}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
查看更多
登录 后发表回答