2010-01-05 5 views
0

J'ai un TabBar avec ViewController dedans. Je fais cela dans mon AppDelegate. J'ai donc un UINavigationControllerTabBarController isKindOfClass - problème avec UINavigationController

test1ViewController = [[Test1ViewController alloc] init]; 
test2ViewController = [[Test2ViewController alloc] init]; 
test3ViewController = [[Test3ViewController alloc] init]; 

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: test2ViewController]; 

NSArray* controllers = [NSArray arrayWithObjects: test1ViewController, navigationController, test3ViewController, nil]; 
[self.tabBarController setViewControllers:controllers animated:YES]; 

[navigationController release]; 

Maintenant, j'ai le problème avec cette ligne de code source:

[(Test2ViewController *)[appDelegate.myTabBarController selectedViewController] methodName:arg1 withTag:arg2]; 

Ici il y aura un SIGBRT, parce que le selectedViewController est dans ce cas un « UINavigationController ». Mais je veux appeler une méthode du "Test2ViewController". Comment pourrais-je faire ça? Normalement, je fais aussi ceci:

if([[appDelegate.myTabBarController selectedViewController] isKindOfClass:[Test2ViewController class]]) { ... } 

Mais échouent aussi parce qu'il est un UINavigationController. Comment réparer ça? Est-ce que quelqu'un sait?

Merci beaucoup d'avance & Cordialement.

Répondre

2

les opérations suivantes:

UINavigationController *navController = (UINavigationController *) [appDelegate.myTabBarController selectedViewController]; 
Test2ViewController  *viewController = (Test2ViewController *) [[navController viewControllers] objectAtIndex: 0]; 

[viewController methodName:arg1 withTag:arg2]; 
+0

ne fonctionne pas: Attention: 'UINavigationController' ne peut pas répondre à '-rootViewController'. Également dans cette ligne SIGABRT se produisent. – Tim

+0

Désolé, essayez le code modifié: [[navController viewControllers] objectAtIndex: 0]; –

+0

cela fonctionne, mais je pourrais le faire avec une ligne: [[[[appDelegate.myTabBarController selectedViewController] viewControllers] objectAtIndex: 0] nomMéthode: arg1 avecTag: arg2]; Cela fonctionne, mais un avertissement apparaît: 'UIViewController' peut ne pas répondre à '-viewControllers' Est-il possible d'éviter ce message d'avertissement? Merci beaucoup! – Tim

Questions connexes