2 votes

L'action ne fonctionne pas si l'UITabBar a plus de 5 éléments

Je souhaite effectuer une action lorsque l'utilisateur clique sur certains onglets de l'UITabBar sans ouvrir une autre vue. Par exemple, définir un onglet ou un partage. Voici ce que j'ai fait :

class ViewTabBarController: UITabBarController,UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
        // Do any additional setup after loading the view.
    }

    override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
        print("do something")
    }
}

Ce code fonctionne correctement si l'UITabBar ne comporte que 5 éléments. Mais le problème est que si l'UITabBar a plus de 5 éléments, ceux qui sont sous l'onglet "More Tab" n'appellent pas la fonction tabBar() lorsqu'ils sont cliqués.

1voto

Upholder Of Truth Points 3579

Extrait de la description de la méthode didSelect de UITabBarControllerDelegate :

Indique au délégué que l'utilisateur a sélectionné un élément dans la barre d'onglets.

Cela signifie que la méthode est appelée lorsque l'utilisateur appuie sur l'un des boutons de la barre. Si vous avez un bouton "more", c'est le bouton de la barre d'onglets et le fait de taper sur "more" déclenche cette méthode.

Les contrôleurs de vue de la section "plus" sont en fait traités d'une manière différente qui implique l'utilisation d'un UINavigationController. Ces vues n'ont pas de bouton dans la barre d'onglets et, par conséquent, cet événement n'est pas déclenché.

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