J'essaie de basculer par programme l'élément de la barre d'onglets. Le code suivant fonctionne très bien, mais je ne peux pas le faire fonctionner dans certaines situations:iPhoneDev, UITabBarController Problèmes SelectedIndex
self.tabBarController.selectedIndex = 0;
Voici le problème:
J'ai un contrôleur de barre d'onglets avec deux classes UIViewController. Dans le second onglet, j'ai le code ci-dessus placé à l'intérieur d'une instruction if dans la méthode viewWillAppear. Le code ci-dessus fonctionne, mais cela ne fonctionne que si la vue n'a jamais été chargée. Donc, sur le premier onglet, j'ai un bouton. Lorsque ce bouton est enfoncé, je passe par programme au deuxième onglet. À ce stade, mon code fonctionne, et je reste essentiellement sur le premier onglet. Mais la commutation ne fonctionne pas après cette première fois. Cela ne fonctionne pas non plus si je sélectionne ce second onglet avant d'appuyer sur ce bouton. L'instruction IF que mon code est à l'intérieur se déclenche, mais l'onglet sélectionné ne change pas.
Toute aide serait appréciée. N'hésitez pas à demander des précisions si vous en avez besoin.
Merci!
Permettez-moi d'ajouter plus d'informations:
(1) Il est uniquement utilisé sur occassion rare. Le premier écran est un écran de recherche. Après avoir appuyé sur Rechercher, vous êtes automatiquement redirigé vers le deuxième onglet, à moins qu'il n'y ait aucun résultat, puis vous êtes alerté et vous restez là. (2) Le deuxième onglet conserve une liste de tous les éléments, si aucune recherche à restreindre n'a été effectuée, ou la liste des éléments restreints. De toute façon, cette liste est toujours disponible. Donc, même si je les arrête sur la page de recherche, s'ils oublient et cliquent sur l'autre onglet, ils seront informés qu'il n'y a pas d'éléments. À ce stade, j'aimerais les ramener à l'onglet un, en tant que convience seulement.
Ce n'est pas un gros problème, je peux m'en passer, et ce n'est pas l'horrible système de programmation que certains prétendent être. Je voulais juste ajouter cet élément de convienence utilisateur ...
Grâce à tc! J'ai utilisé la méthode suivante dans mon UITabBarControllerDelegate:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
if(self.tabBarController.selectedIndex == 0){
if([books count] == 0){
[self alertNoResults];
return(FALSE);
}
}
return(TRUE);
}
Travaillé comme un charme!
pourquoi passer à l'onglet 0 lorsque l'onglet 1 apparaîtra? On dirait que vous êtes en train de jouer avec les mauvaises choses au mauvais endroit, à un point où l'API n'aime pas que cela se produise (en d'autres termes: quand vous voyez le message "la vue apparaîtra", ce n'est pas le meilleur moment une action totalement différente). Développer une approche plus propre. – mvds
Il est seulement utilisé à de rares occasions, quand aucun résultat de recherche n'a été retourné, je veux retourner l'utilisateur automatiquement au premier écran. – IcyBlueRose
Vous devriez vérifier cela avant de les envoyer au deuxième écran. Vous avez maintenant une sorte de "faire-défaire", alors que vous ne devriez rien faire en premier lieu. – mvds