iphone app - détecter l'onglet élément de barre a été pressé
j'ai un onglet de la barre en fonction de l'application, avec plus de 5 onglet éléments de la barre - si je reçois 4 d'entre eux directement affiché dans la vue et le reste disponible en cliquant sur le "Plus" de l'onglet. Lorsqu'une barre d'onglet article est pressé, je veux détecter dont l'une a été.
Ainsi, dans l'
- (void)tabBarController:(UITabBarController *)tabBarCtrl didSelectViewController:(UIViewController *)viewController
méthode, j'utilise tabBarCtrl.selectedViewController.title
pour obtenir le titre de l'élément.
Cela fonctionne pour les onglets visibles dans la vue -c'est les 4 premiers et le "Plus" de l'onglet, mais ne fonctionne pas pour le reste de ma barre d'onglet éléments qui sont affichés dans la liste après avoir appuyé sur le "Plus" de l'onglet.
Je peux voir que la didSelectViewController méthode n'est même pas appelé lors de la sélection d'un onglet à partir de la "Plus" de la liste.
Comment puis-je détecter un d'eux lorsqu'il est pressé?
Vous en remercie d'avance.
Vous devez vous connecter pour publier un commentaire.
Comment obtenir le titre de UITabBarItem dans la section?
Vous pouvez accéder à l'index de l'élément sélectionné à l'aide de code suivant dans votre
UIViewController
. Il toujours retour yout l'onglet index.Donc, si vous avez par exemple 6 éléments, vous pouvez aller à la "Plus..." dans l'onglet, sélectionnez votre "5ème élément" et selectedIndex sera 4. Si vous allez à l'onglet et sélectionnez 6ème point, il va revenir 5.
EDIT: Si vous souhaitez vérifier la position actuelle de certains UITabBarItem vous pouvez faire ceci:
Tout d'abord, dans votre fichier XIB, vous devriez modifier le
tag
de la propriété de chaque onglet, de sorte que le 1er onglet aura tag = 100, 2e - 200, la 3e de 300, etc.Puis dans ViewController ajouter ce code:
Ensuite, vous pouvez déterminer ce que viewController est-il par l'utilisation de
selectedItemTag
variable. Dans ce cas, vous pouvez déterminer selectedIndex par doint ce:selectedIndex = (selectedItemTag-100)/100
.La
tag
propriétés sont pas changé lors de la personnalisation de votre UITabBar, de sorte que vous pouvez leur faire confiance 🙂Vous pouvez détecter lorsqu'un onglet a été enfoncé à l'aide de la UITabBarDelegate méthodes: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UITabBarDelegate
Vous pouvez faire votre UITabBarController de classe les délégués et ajoutez la méthode de la mise en œuvre:
1. Donc, si vous utilisez un UITabBarController vous pouvez faire la classe implémente l' UITabBarControllerDelegate et de définir votre UITabBarController délégué à la classe qui doit être notifié lors de la TabBar élément sélectionné modifications, puis ajouter la méthode du délégué à votre classe:
À l'intérieur de cette méthode, vous pouvez utiliser le UITabBarController propriété selectedIndex de savoir qui est l'indice actuel sélectionné:
2. Si vous n'êtes pas en utilisant simplement la UITabBar vous pouvez suivre ici la réponse de Ken Pespisa et iCoder dans ce post Ken Pespisa et iCoder dans ce post.
Depuis l'ajout de balises à votre CHAQUE
UITabBarItem
(même ceux avec un indice 5 et plus).Vous pouvez suivre ce que l'onglet est sélectionné à l'aide de code suivant:
Si vous utilisez une barre d'onglet contrôleur, vous devriez éviter de connaître la correspondance entre les onglet éléments et de la vue des contrôleurs -- c'est le travail de la barre d'onglet contrôleur. Si vous essayez d'utiliser une barre d'onglet pour quelque chose d'autre, alors vous devriez utiliser UITabBar directement et de ne pas utiliser UITabBarController. Si vous utilisez UITabBar, vous pouvez définir votre propre objet que l'onglet de la barre de son délégué, et le délégué obtiendrez alors des messages chaque fois que l'élément sélectionné change.