Comment puis-je passer à un onglet dans UITabBarController
en utilisant StoryBoard? J'ai essayé le code ci-dessous mais sans succès (l'onglet n'est pas sélectionné):
self.tabBar.selectedIndex = 3;
Honnêtement, j'ai utilisé des fichiers nib sans StoryBoard et ce code ci-dessus a bien fonctionné dans
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions
:(NSDictionary *)launchOptions
mais maintenant je ne peux pas définir l'onglet par programmation. Il y a peut-être un autre problème qui n'est pas lié à la sélection de l'onglet. Comment changer d'onglet?
Prenez votre instance de UITabBarController
puis définissez la propriété selectedViewController
:
yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want
Alexander, je pense que votre problème est d'obtenir une instance correcte de votre barre d'onglets. Si votre barre d'onglets est votre contrôleur de vue racine, vous pouvez le faire comme ceci dans votre méthode appdelegate if didFinishLoading:
UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setSelectedIndex:3];
Essayez-le et dites-moi le résultat s'il vous plaît.
* Commentaire Swift - 18 mois plus tard, si vous convertissez la solution de Yanchi en Swift dans votre application, vous obtiendrez le résultat escompté. La traduction Swift est:
let tabBar: UITabBarController = self.window?.rootViewController as! UITabBarController
tabBar.selectedIndex = 1
Cela fonctionnera aussi en stroryboard ...
[self.tabBarController setSelectedIndex:3];
Avec cet ajout UITabBarControllerDelegate
dans .h
puis utilisez cette méthode delegate
- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController
{
return (theTabBarController.selectedViewController != viewController);
}
Vous pouvez y parvenir également en utilisant uniquement des storyboards. Faites un Ctrl-glisser de tabBarController vers vos ViewController (s) et sélectionnez 'Relation Segue, View controllers'. Le premier ViewController que vous sélectionnez sera le ViewController par défaut/initial.
J'utilise IBInspected dans LSwift
:
extension UITabBarController {
@IBInspectable var selected_index: Int {
get {
return selectedIndex
}
set(index) {
selectedIndex = index
}
}
}
Swift 4.1
Dans votre classe TabBarViewController
, vous pouvez ajouter cette ligne clé
self.selectedIndex = 0