Как установить пункт 1 панели вкладок, который будет выбран по умолчанию в iphone?

Я новичок в разработке iPhone. Я создаю приложение на основе представления. Я добавил панель вкладок в моем представлении (а не контроллер панели вкладок). Установив значение тега vale элемента панели вкладок на 1, 2, я загрузил представление для каждой панели вкладок в событии щелчка элемента панели вкладок.

Я хочу, чтобы панель вкладок 1 была выбрана по умолчанию. Что я должен сделать для этого?

Вот мой код:

- (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;
    }
}

Я добавил панель вкладок в построителе интерфейса. Могу ли я что-нибудь сделать в построителе интерфейса?

Ответы

Ответ 1

[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];

Ответ 2

Для быстрого, если tabBar равен @IBOutlet используйте в viewDidLoad:

tabBar.selectedItem = tabBar.items?.first

Ответ 3

Не можете ли вы просто вызвать свой метод для выбора вкладки всякий раз, когда вы показываете представление? Например:

[self activateTab:1];

Чтобы изменить выбранный элемент панели вкладок, используйте:

[myTabBar setSelectedItem:myTabBarItem];

Где myTabBarItem - ваш экземпляр UITabBarItem для соответствующего представления.

Ответ 4

Вы можете установить индекс по умолчанию для TabBarController, установив свойство selectedIndex. Это можно поместить в viewDidLoad или до нажатия контроллера, если вы это делаете. Это делается только тогда, когда вы используете TabBarController, а не только TabBar.

tabBarController.selectedIndex = 1;

Если вы используете TabBar без TabBarController, тогда вы должны сделать это так.

self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:1];

Ответ 5

, если UITabBar уже не обрабатывается UITabBarController

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

здесь TabBar - это выход для UITabBar.

, если UITabBar уже обработан UITabBarController

[self.tabBarController setSelectedIndex:1];

Ответ 6

Следующее отлично работает для меня в Swift 1.2

myTabBar.selectedItem = myTabBarItem

где myTabBar и myTabBarItem являются IBOutlets для соответствующих элементов на раскадровке.

Ответ 7

Swift 3:

@IBOutlet weak var uiTabBarOutlet: UITabBar!

uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0] 

Ответ 8

Как я это сделал, используя 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.
}

Ответ 9

Не забудьте указать делегат UITabBar в построителе интерфейса как класс контроллера представления, а также установить <UITabBarDelegate> после объявления @interface в классе.

вы можете установить первую вкладку для выделения следующим образом:

- (void)viewDidLoad {
    [super viewDidLoad];

    if (tabBar.items.count >= 1) {
        [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
    }
}

Ответ 10

Swift 4:

override func viewDidLoad() {
    super.viewDidLoad()
    self.selectTab(at: 1, animated: false)
}