web-dev-qa-db-fra.com

Comment définir l'onglet sélectionné dans UITabBarController à l'aide de StoryBoard?

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?

24
Matrosov Alexander

Prenez votre instance de UITabBarController puis définissez la propriété selectedViewController:

yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:3];//or whichever index you want
35
Tommy Devoy

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.

18
Yanchi

* 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
11
Phil Andrews

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);
}
4
iosLearner

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.

2
Wubbe

J'utilise IBInspected dans LSwift:

extension UITabBarController {
    @IBInspectable var selected_index: Int {
        get {
            return selectedIndex
        }
        set(index) {
            selectedIndex = index
        }
    }
}
2
superarts.org

Swift 4.1

Dans votre classe TabBarViewController, vous pouvez ajouter cette ligne clé

self.selectedIndex = 0
1
Ketan Sodvadiya