Reputation: 171
My iPhone app is made of of a main tabController with 4 main tabs. I have a situation where ViewController A loads ViewController B (using pushViewController). I now need to get back to ViewController A and and trigger an action on A from B.
Getting back to A is easy all I have to do is :-
self.tabBarController.selectedIndex = 0;
[self.navigationController popViewControllerAnimated:YES];
this then causes the ViewController A to be visible.
But how do I then get ViewController B to fire an action on A?
I have tried to use:-
ViewControllerA *aVC = ((ViewControllerA *)((UIViewController *)[self.tabBarC.tabBarController.viewControllers objectAtIndex:0]));
[aVC setAnnoSelected];
Only when I do that I get:-
-[UINavigationController setAnnoSelected]: unrecognized selector sent to instance 0x461d290
I have tried to use
[ViewControllerA performSelector:@selector(setAnnoSelected) withObject: nil afterDelay: 0.0];
But so far no joy.
Any ideas would be greatly appreciated.
Thanks Cheryl
P.S. This is a great site for help - thanks to anyone who has ever answered a question as you have helped me too.
Upvotes: 1
Views: 420
Reputation: 85542
It looks like your tabBarController's viewControllers are actually UINavigationControllers (you can see this by the unrecognized selector error). You probably want to look at that controller's own view controllers:
UINavigationController *navController = (UINavigationController *) [self.tabBarController.viewControllers objectAtIndex: 0];
ViewControllerA *controller = [navController.viewControllers objectAtIndex: 0];
[controller setAnnoSelected];
You might want to consider doing this with a notification instead, however, as this method is a little fragile.
Upvotes: 2