2010-09-16 14 views
0

J'ai un UITabBarController instancié dans mon appDelegate, mais j'ai besoin d'un moyen de savoir quand l'utilisateur appuie sur les différents éléments de la barre d'onglets (boutons de la barre d'onglets).Détermination de la sous-classe UIViewController à laquelle appartient un objet UITabBar

-UITabBarDéléguer le protocole à la rescousse (avec la méthode didSelectViewController requise)!

Avec tout ce qui est câblé dans Interface Builder, comment obtenir une référence à l'instance de sous-classe UIViewController qui correspond à cet élément de la barre d'onglets qui a été pressé?

J'ai besoin de cette référence car j'ai besoin d'appeler une méthode dans l'une de mes sous-classes UIViewControllers chaque fois que l'on appuie sur cet élément de la barre d'onglets.

Des suggestions?

- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    NSLog(@"%@", [[self.tabBarController selectedViewController] nibName]); // nil, no success here  

    if ([theTabBarController selectedIndex] == 1) {   
     MySecondViewController *reference = (MySecondViewController *) viewController;  

    if ([reference isKindOfClass:[UINavigationController class]]) { 
     NSLog(@"OMG. It's a UINavigationController class??!"); // kicks in for some reason, shouldn't reference be a MySecondViewController 
    } 
} 
+1

Il semble que vous utilisez-vous un 'UINavigationController' dans l'onglet qui est activé. Si c'est le cas, vous devez obtenir le contrôleur de vue supérieur à partir du 'UINavigationController', et vous devriez obtenir votre instance' MySecondViewController'. – pgb

Répondre

0

Peut-être je ne comprends pas bien votre question, mais il semble que ce que vous demandez est tout simplement le paramètre « viewController » qui est passé dans la méthode appel que vous avez mentionné

- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController 

UITabBarController dispose également d'une propriété pour obtenir la même information

@property(nonatomic, assign) UIViewController *selectedViewController