Как настроить элемент панели вкладок 1 для выбора по умолчанию в iphone? - PullRequest
18 голосов
/ 24 февраля 2010

Я новичок в разработке для 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;
    }
}

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

Ответы [ 9 ]

36 голосов
/ 11 августа 2010
[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];
13 голосов
/ 24 мая 2016

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

tabBar.selectedItem = tabBar.items?.first
9 голосов
/ 24 февраля 2010

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

[self activateTab:1];

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

[myTabBar setSelectedItem:myTabBarItem];

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

6 голосов
/ 19 апреля 2016

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

tabBarController.selectedIndex = 1;

Если вы используете TabBar без TabBarController, вы должны сделать это следующим образом.

self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:1];
3 голосов
/ 20 ноября 2015

, если UITabBar НЕ обрабатывается UITabBarController

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

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

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

[self.tabBarController setSelectedIndex:1];
2 голосов
/ 05 июня 2017

Свифт 3:

@IBOutlet weak var uiTabBarOutlet: UITabBar!

uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0] 
2 голосов
/ 14 июля 2015

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

myTabBar.selectedItem = myTabBarItem

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

0 голосов
/ 03 августа 2015

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

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

- (void)viewDidLoad {
    [super viewDidLoad];

    if (tabBar.items.count >= 1) {
        [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
    }
}
0 голосов
/ 29 июля 2015

Как я это сделал, используя 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...