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?
[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];
Pour Swift 3.0 si tabBar est @IBOutlet
, utilisez viewDidLoad:
tabBar.selectedItem = tabBar.items![0]
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.
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];
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];
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.
Swift 3:
@IBOutlet weak var uiTabBarOutlet: UITabBar!
uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0]
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.
}
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]];
}
}