tabBar didSelectItem semble ne pas fonctionner
Dans mon fichier d'en-tête, j'ai ceci:
@interface TabBarController : UIViewController <UIApplicationDelegate, UITabBarDelegate, UITabBarControllerDelegate>{
IBOutlet UITabBarController *tabBarController;
}
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end
Dans mon fichier principal, j'ai ceci:
@synthesize tabBarController;
-(void)viewDidLoad{
[super viewDidLoad];
self.tabBarController.delegate = self;
self.view = tabBarController.view;
}
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
NSLog(@"rawr");
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (void)dealloc {
[tabBarController release];
[super dealloc];
}
@end
J'ai déjà branché mon tabbarcontroller
en tant que délégué à mon propriétaire du fichier dans l'interface builder, mais encore, elle n'appelle jamais la didSelectItem
méthode.
Est-il quelque chose qui me manque ici?
J'ai déjà ajouté tabBarController.delegate = self;
et il ne fonctionne toujours pas.
Que faire si vous le faites par programmation? I. e.,
il stil ne fonctionne pas 🙁
tabBarController.delegate = self;
?il stil ne fonctionne pas 🙁
OriginalL'auteur Rowie Po | 2012-06-08
Vous devez vous connecter pour publier un commentaire.
Cette méthode est une méthode du délégué pour UITabBar, pas UITabBarController, donc
ne fonctionnera pas.
Barre d'onglet contrôleur dispose de son propre UITabBar, mais en changeant le délégué d'une barre d'onglet géré par un onglet de la barre de contrôleur n'est pas autorisé, donc, juste essayer UITabBarControllerDelegate méthode comme ceci:
<UITabBarControllerDelegate>
à l' .h de votre délégué d'application et quelque chose commeUITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; tabBarController.delegate = self;
dans ledidFinishLaunchingWithOptions
méthode.OriginalL'auteur idearibosome
Vous avez besoin d'ajouter ceci:
OriginalL'auteur iOSDev
Utilisation
UITabBarControllerDelegate
au lieu deUITabBarDelegate
et-tabBarController:didSelectViewController{}
au lieu detabBar:didSelectItem{}
OriginalL'auteur Sameera R.
Il suffit de régler le délégué de la barre d'onglet. Vous pouvez le faire en définissant
self.tabBarController.delegate = self;
ou en utilisant l'Interface du générateur de faire de la tabbarcontroller objet (pas de bar) voir le lien de l'inspecteur et faites glisser la connexion sur le propriétaire du fichier.Probablement, j'ai compris. Si vous voulez que la méthode -(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)point; d'être appelé, vous devez définir la tabbar délégué de la propriété de soi. Donc, essayez quelque chose comme ça de l'auto.tabBarController.tabBar.delegate = self;
il ne fonctionne pas, si je mets de l'auto.tabBarController.tabBar.delegate = self; dans le viewDidLoad. il me donne une erreur de Terminaison d'application en raison de uncaught exception 'NSInternalInconsistencyException', la raison: "Changer le délégué d'une barre d'onglet géré par un onglet de la barre de contrôleur n'est pas possible".
Je pensais à ce sujet. là est le problème.. que la barre d'onglets que vous souhaitez recevoir des événements, est géré le uitabbarviewcontroller. Cela signifie que vous ne recevrez jamais de ces messages. Vous pouvez écouter la UITabBarViewController délégué méthodes qui, indirectement, venez à partir de l'onglet de la barre de délégué méthodes. developer.apple.com/library/ios/#documentation/UIKit/Reference/...
Je suis un peu nouveau sur ce encore si toutes les suggestions que vous pouvez montrer comment résoudre ce problème? Il serait vraiment utile. Merci!
OriginalL'auteur Andrea
Vous ont synthétisé la barre d'onglet, de sorte que vous devez maintenant écrire:
self.tabBarController.delegate = self;
OriginalL'auteur Tal Shumski
Il y a beaucoup de raisons, comme indiqué ci-dessus, pourquoi il ne pourrait pas être travail. Ici, c'est un plus subtiles de la raison. Si vous êtes à la création de votre INTERFACE utilisateur par programmation (pas de storyboard ou Xib), vous devez définir l'écran de votre UIWindow.
Si vous utilisez un Xib, je crois que c'est équivalent à avoir "Plein Écran au Lancement" sélectionné. Qui doit être vérifié ou j'ai remarqué que mes Onglets ne fonctionnent pas.
Mise à jour: que ce soit, bas-vote-moi si vous le devez, mais j'ai eu un non-travail onglet contrôleur et c'est ce que j'avais à faire pour qu'il fonctionne. Aucune des autres réponses sur cette page m'a aidé. Je suppose qu'à l'aide d'un xib/storyboard est assez rare de nos jours (je pense que c'est à partir de iOS 5 jours), mais en laissant ici pour la personne qui le fait et trébuche dans cette situation.
OriginalL'auteur Ray Fix