Détecter UITabBar Index Sélectionné/ Item Changements qui est défini par programmation
Je voudrais savoir comment détecter la TabBar Élément ou Indice est changé quand les modifications se fait par programmation?
self.tabBarController.selectedIndex = 1;
Cette double fonction de délégué seulement de détecter des changements lors de la tabBar Élément a été sélectionné par l'utilisateur. Il ne se déclenche pas lorsque les modifications apportées à la propriété selectedIndex a été fait par programmation.
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
println("tabBarController didSelectViewController")
}
override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem!) {
println("tabBar didSelectItem")
}
OriginalL'auteur JayVDiyk | 2015-06-07
Vous devez vous connecter pour publier un commentaire.
Réponses précédentes sont suffisantes pour "détecter" les changements, cependant, il ne détecte pas l'index est d'être pressé.
auto.selectedIndex ne sera pas de retour l'index sélectionné. Pour vérifier quel est l'élément pressé, il serait nécessaire de comparer l'article avec la tabBarItems dans notre UITabBarController
OriginalL'auteur Eddy Liu
Le long de toutes les réponses ici, si vous sous-classé
UITabBarController
déjà, voici une solution simple pour tous les onglet de la barre de changements (initié par l'Utilisateur et par programme ):OriginalL'auteur Meseery
que ne peut pas être fait, mais une sorte de piratage, il peut être fait et je suis sûr que ça va être une solution temporaire à ce problème.
remplacer ci-dessous la méthode pour tabbarcontrollerdelegate faire vos affaires à l'intérieur de cette fonction est appelée quand l'onglet est activé dans les deux cas, par programmation ou en tapant sur la barre d'onglet de l'élément.
OriginalL'auteur Amit Saxena
Swift 3
Ici est un peu plus sûr de Swift-3 version, de ce qui a été proposé ci-dessus:
UITabBarController:
Utilisation:
OriginalL'auteur jeff-ziligy
Dans swift, vous pouvez le faire en remplaçant
selectedIndex
propriété deUITabBarController
.Première sous-classe
UITabBarController
et ajoutez tous le code suivant.Également ajouter cette méthode du délégué de
UITabBarControllerDelegate
Enfin, nous appelons cette méthode à partir de deux endroits, de sorte que tous les cas sont traités.
OriginalL'auteur Vineet Ashtekar
J'ai trouvé une belle solution à cette question. Grâce à Ckouta pour l'idée.
Il suffit de créer une fonction pour modifier l'index et le feu le délégué protocole de UITabBar de didSelectItem
Utilisation
OriginalL'auteur JayVDiyk
Je ne se souciait de la propriété selectedIndex dans l'un des VCs dans la barre d'onglet contrôleur de la pile. J'ai donc KVO:ed segmentedIndex sur le tabbarcontroller instance à partir de ce CR. Fonctionne bien, pas de réels problèmes.
OriginalL'auteur Jonny
Swift 4:- Vous devez utiliser ces lignes de code pour la détection UITabBar index de l'élément sélectionné.
func tabBar(_ tabBar: UITabBar, didSelect élément: UITabBarItem) {
OriginalL'auteur V.Kumar