2010-05-01 6 views
1

J'ai un tabBar avec 4 onglets, et je veux effectuer une action lorsqu'un onglet spécifique est sélectionné, j'ai donc décommenté le UITabBarControllerDelegate dans le xxAppDelegate.mUITabBarControllerDelegate comparer la valeur de viewController

Je voulais aussi pour voir la valeur qui a été envoyé connecté dans la console - afin de tester mon "if" déclaration. Cependant, c'est là que j'ai été perplexe.

// Optional UITabBarControllerDelegate method 
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 

    NSLog(@"%@", viewController); 
} 

La console d'un contrôleur connecté docilement sélectionné qui avait été sélectionné, mais dans ce format particulier:

<MyViewController: 0x3b12950> 

Maintenant, je ne m'y attendais les crochets ou le côlon ou Hex. Donc, ma question est comment puis-je formater ma déclaration IF? C'est ce que je pensais que cela fonctionnerait mais je reçois une erreur plus bas.

// Optional UITabBarControllerDelegate method 
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 

    NSLog(@"%@", viewController); 
    if (viewController == MyViewController) 
    { 
    //do something nice here … 
    }; 
} 

... L'erreur est "l'expression attendue avant 'MyViewController'"

Quelqu'un sait comment je devrais faire cela?

+0

J'ai essayé exactement cela maintenant et j'ai fini par exactement la même erreur! Merci! – LouwHopley

Répondre

0

Merci pour votre travail. Je suppose que vous devez savoir quel objet vous comparez en premier.

Pour quiconque lit ceci, le code fourni fonctionne, mais vous devez faire attention à ce que le texte «tabBarController» dans l'exemple se réfère à la variable d'instance (la variable globale).

Pour que votre code fonctionne, votre contrôleur de vue doit faire référence à une version locale nommée de la manière suivante. Comparez ceci à mon code original.

// Optional UITabBarControllerDelegate method 
- (void)tabBarController:(UITabBarController *)tabBarController_local didSelectViewController:(UIViewController *)viewController 
{ 
//... 
} 

Hope this helps quelqu'un face à l'avertissement

Local declaration of 'tabBarController' hides instance variable 

en essayant de mettre en œuvre.

2

Vous devez comparer à une instance de contrôleur de vue spécifique. Par exemple, si l'instruction if doit être true lorsque le deuxième onglet est sélectionné:

if (viewController == [tabBarController.viewControllers objectAtIndex:1]) { 
    // ... 
} 
-1

Lorsque l'on compare tabbarcontroller auto utilisation, comme ceci:

if (viewController == [self.tabBarController.viewControllers objectAtIndex:1]) { 
    // ... 
} 

Il supprimera l'avertissement.

Questions connexes