0 votes

Comment ne pas laisser l'utilisateur choisir un certain TabBarItem ?

Lorsqu'un utilisateur veut choisir un certain élément de l'UITabBar, je veux d'abord vérifier s'il peut le choisir. Et s'il ne le peut pas, afficher une alerte.

Il existe une méthode de délégation qui est déclenchée lorsqu'un utilisateur choisit un certain élément, mais elle ne fonctionne pas lorsqu'un élément est désactivé.

Quelle est la meilleure façon d'y parvenir ?

Merci.

1voto

U62 Points 3575

Ce n'est pas une bonne pratique de conception d'interface utilisateur. Si un bouton est désactivé, il ne doit pas réagir du tout à l'interaction de l'utilisateur. S'il n'est pas désactivé, il doit faire quelque chose. Le seul cas où il est justifié d'avoir un bouton non désactivé qui affiche une erreur ou un avertissement au lieu d'exécuter l'action souhaitée est celui où l'on ne peut déterminer qu'au dernier moment que l'action est impossible à exécuter.

0voto

Roger Points 163

Pourquoi le bouton est-il désactivé ? Ne pourriez-vous pas simplement vérifier qu'ils ont accès au bouton à chaque fois et ne pas désactiver le bouton ?

0voto

Asri Zainal Points 336

Vous devrez utiliser la méthode du délégué de UITabBarControllerDelegate :

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

Dans cette méthode, vous vérifiez que l'utilisateur a bien essayé de sélectionner une option, en examinant le selectedIndex du UITabBarController. Vous pouvez également obtenir une référence à l'UITabBar elle-même et inspecter ses propriétés :

UITabBar* tabBar = [tabBarController.view viewWithKindOfClass:[UITabBar class]];

Si vous ne voulez pas que l'onglet soit sélectionnable, déclenchez votre alerte et attribuez un entier à tabBarController.selectedIndex pour le changer en dehors de cet onglet.

Avertissement : comme l'indique l'affiche ci-dessus, il ne s'agit pas d'une pratique de conception d'interface utilisateur cohérente avec les autres applications iPhone.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X