2010-11-04 4 views
1

Bonjour Habituellement, si vous êtes dans une arborescence UINavigation avec une combinaison de barre de navigation et que vous appuyez sur un élément de tabulation, vous reviendrez au rootviewControler.Poignée Événement en appuyant sur l'élément de la tabulation si elle est activée

Je dois obtenir cet événement -> en appuyant sur un élément de la barre d'onglets s'il est activé. Est-ce que c'est en quelque sorte possible d'attraper cet événement?

meilleures salutations

Répondre

0

Assurez votre contrôleur de vue conforme au protocole UITabBarDelegate et mettre en œuvre tabBar:didSelectItem: je mets habituellement les UITabBarItems avec des balises que je peux utiliser dans le code de décider quoi faire.

@interface MyViewController : UIViewController <UITabBarDelegate> 
{ 
} 
@end 

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 
    enum { 
     FooButton = 1, // Presumably you set these up in IB or in code elsewhere 
     BarButton, 
     BazButton 
    }; 

    switch(item.tag) { 
     case FooButton: 
      [self doTheFooThing]; 
     break; 
     // ... Other cases here 
    } 
} 
+0

je fais déjà. Mais thios se déclenche également si j'appuie sur l'élément tabbar quand il n'est pas encore sélectionné. J'ai besoin de déclencher un événement qui se déclenche lorsque je tape sur un TabItem quand il est déjà sélectionné. Si vous passez d'un robinet à un autre, cet événement ne devrait pas se déclencher. – grobald

+0

Cela se déclenchera si vous appuyez sur un élément déjà sélectionné. Peut-être que vous pourriez mettre du code là-bas pour ignorer le tap si c'était sur un élément qui n'était pas déjà sélectionné? – zpasternack

1

i got it:

//NSLog(@"TabItem %@ tapped with tag: %d", viewController.tbItem.title, viewController.tbItem.tag); 
if ([viewController.tbItem.title isEqualToString:NSLocalizedString(@"FEATURE_NEARBY", nil)]) { 
    if([((MyNavigationController*)(self.selectedViewController)).visibleViewController isKindOfClass:[MyViewController class]]){ 
    [(MyViewController*)((MyNavigationController*)(self.selectedViewController)).visibleViewController myFunction]; 
    } 
} 
Questions connexes