Quelqu'un peut-il me dire comment définir l'onglet par défaut lors de l'utilisation de storyboards dans iOS. Je n'arrive pas à comprendre comment y parvenir.
Je vous remercie
Vous pouvez utiliser l'une de ces deux méthodes:
tabBar.items = tabBarItems;
tabBar.selectedItem = [tabBarItems objectAtIndex:0];
ou une méthode directe de l'objet
[tabBar setSelectedItem:myUITabBarItem];
ou vous pouvez les combiner pour faire ceci:
tabBar.items = tabBarItems;
[tabBar setSelectedItem:[tabBarItems objectAtIndex:0]];
mais je n'ai pas encore testé cette méthode, j'espère que cela aidera!
Bien que vous puissiez définir par programmation l'onglet initial sélectionné comme les autres réponses, pour obtenir le même résultat dans votre story-board sans toucher au code, procédez comme suit:
Cela devrait ressembler à cela une fois que vous avez accompli les étapes ci-dessus:
Cela peut sembler excessif pour certains de la sous-classe UITabBarController
, mais, je pense que cela fournit la solution la plus propre.
BaseTabBarController.Swift
Ajoutez un @IBInspectable
et définissez-le dans viewDidLoad
:
class BaseTabBarController: UITabBarController {
@IBInspectable var defaultIndex: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
selectedIndex = defaultIndex
}
}
Dans le storyboard, définissez-vous UITabBarController
comme nouvelle sous-classe:
UITabBarController
;Ajoutez ceci à la fin de viewDidLoad
:
self.selectedIndex = 1;
Définissez ce nouveau fichier comme classe personnalisée dans la UITabBarController
de votre storyboard.
Vous avez terminé.
Le code suivant a fonctionné pour moi:
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.selectedIndex = 2;
Dans la viewDidLoad()
de la TabBarController
, définissez selectedIndex
sur ce que vous voulez. (0
serait le premier, 3
serait le quatrième, etc.)
dans appdelegate, trouvez la fonction applicationDidBecomeActive
et ajoutez ces lignes
let tabBarController = self.window?.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0 // any index you want
Vous pouvez y parvenir via Xcode 8 ou version ultérieure (juste testé et ne sachant pas s'il est disponible avant cette version)
Faites les étapes comme dit @Joshua Finch mais:
Ma variante est appropriée lorsque vous voulez changer simplement le contrôleur sélectionné par défaut, sans autre personnalisation. Ajoutez simplement le suivi catégorie:
// UITabBarController+DefaultPage.h
#import <UIKit/UIKit.h>
@interface UITabBarController(DefaultPage)
@end
// UITabBarController+DefaultPage.m
#import "UITabBarController+DefaultPage.h"
@implementation UITabBarController(DefaultPage)
- (void)viewDidLoad {
[super viewDidLoad];
self.selectedIndex = 1;
}
@end
p.s: Je préfère @ joshua-finch répondre
En me basant sur la réponse de Aviel Gross, je souhaitais simplement implémenter cela pour un UITabBar, par opposition à UITabBarController. Cela peut être fait comme suit:
class BaseTabBar: UITabBar {
@IBInspectable var defaultIndex: Int = 0 {
didSet {
self.selectedItem = self.items?[defaultIndex]
}
}
}
Si vous naviguez vers votre UITabBarController à partir de, par exemple. un écran de connexion, il serait peut-être moins pénible de définir la sélection à cet emplacement:
let tabs = self.storyboard?.instantiateViewController(withIdentifier: "tabs") as! UITabBarController
tabs.selectedIndex = 1
self.present(tabs, animated:false)