web-dev-qa-db-fra.com

Comment puis-je définir par programme l'onglet sélectionné de UITabBarController tout en déclenchant shouldSelectViewController dans UITabBarControllerDelegate

J'essaie d'animer les transitions entre les onglets dans mon UITabBarController, qui fonctionne bien lorsque j'appuie sur les boutons d'onglet. Cependant, lorsque je change d'onglet par programme en appelant

[self.tabBarController setSelectedIndex:2];

dans un identificateur de mouvement de balayage, la fonction shouldSelectViewController n'est PAS appelée dans mon délégué UITabBarControllerDelegate, et donc mon animation n'est pas déclenchée.

Existe-t-il un moyen d'accomplir ce que je veux? Puis-je déclencher le commutateur de tabulation de manière différente par programmation afin que la fonction shouldSelectViewController soit appelée?

24
herrtim

Si vous avez implémenté - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController dans le délégué de votre tabBarController, vous pouvez l'appeler manuellement.

[self.tabBarController.delegate tabBarController:self.tabBarController shouldSelectViewController:[[tabBar viewControllers] objectAtIndex:2]];
[self.tabBarController setSelectedIndex:2];

J'espère que cela t'aides.

46
Kapil Choubisa