web-dev-qa-db-fra.com

Comment définir le point 1 de la barre d'onglets pour qu'il soit sélectionné par défaut dans iphone?

Je suis nouveau dans le développement iPhone. Je crée une application basée sur les vues. J'ai ajouté une barre de tabulation à ma vue (et non un contrôleur de barre de tabulation). En définissant la valeur de balise de l'élément de la barre d'onglets sur 1, 2, j'ai chargé la vue pour chaque barre d'onglets sur l'événement de clic sur l'élément de la barre d'onglets.

Je veux que la barre de tabulation 1 soit sélectionnée par défaut. Que dois-je faire pour ça?

Voici mon 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;
    }
}

J'ai ajouté la barre d'onglets dans le générateur d'interface. Puis-je faire quelque chose dans le générateur d'interface?

16
Warrior
[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];
35
Sca

Pour Swift 3.0 si tabBar est @IBOutlet, utilisez viewDidLoad:

tabBar.selectedItem = tabBar.items![0]
11
Mat0

Ne pouvez-vous pas simplement appeler votre méthode pour sélectionner un onglet chaque fois que vous affichez la vue? Ainsi:

[self activateTab:1];

Pour changer l’élément de barre d’onglet sélectionné, utilisez:

[myTabBar setSelectedItem:myTabBarItem];

Où myTabBarItem est votre instance UITabBarItem pour la vue pertinente.

9
pheelicks

Vous pouvez définir l'index par défaut de TabBarController en définissant la propriété selectedIndex. Cela peut être mis dans viewDidLoad ou Avant d'appuyer sur le contrôleur si vous le faites de cette façon. Cela est fait uniquement lorsque vous utilisez un TabBarController et pas seulement un TabBar.

tabBarController.selectedIndex = 1;

Si vous utilisez un TabBar sans TabBarController, vous devez le faire comme ceci. 

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

si UITabBar n'est pas déjà géré par un UITabBarController

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

ici, TabBar est le point de vente de UITabBar.

si UITabBar est déjà géré par un UITabBarController

[self.tabBarController setSelectedIndex:1];
3
Nikhil Augustine

Ce qui suit fonctionne parfaitement pour moi dans Swift 1.2

myTabBar.selectedItem = myTabBarItem

où myTabBar et myTabBarItem sont des IBOutlets par rapport aux éléments respectifs du scénario.

2
mohonish

Swift 3:

@IBOutlet weak var uiTabBarOutlet: UITabBar!

uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0] 
2
user8113980

Comment je l'ai fait, en utilisant 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.
}
0
alvin

N'oubliez pas de définir le délégué de UITabBar dans le générateur d'interface comme étant la classe du contrôleur de vue, ainsi que <UITabBarDelegate> après la déclaration @interface dans la classe.

vous pouvez ensuite définir le premier onglet pour qu'il soit surligné de la manière suivante:

- (void)viewDidLoad {
    [super viewDidLoad];

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