我的iPhone应用程序由一个带有4个主要标签的主tabController组成。我有一种情况,ViewController A加载ViewController B(使用pushViewController)。我现在需要回到ViewController A并从B触发对A的操作。
回到A很容易我所要做的就是: -
self.tabBarController.selectedIndex = 0;
[self.navigationController popViewControllerAnimated:YES];
这会导致ViewController A可见。
但是,如何让ViewController B在A上激活一个动作?
我试图使用: -
ViewControllerA *aVC = ((ViewControllerA *)((UIViewController *)[self.tabBarC.tabBarController.viewControllers objectAtIndex:0]));
[aVC setAnnoSelected];
只有当我这样做时才会得到: -
-[UINavigationController setAnnoSelected]: unrecognized selector sent to instance 0x461d290
我尝试过使用
[ViewControllerA performSelector:@selector(setAnnoSelected) withObject: nil afterDelay: 0.0];
但到目前为止还没有快乐。
非常感谢任何想法。
由于 谢丽尔
P.S。这是一个很好的帮助网站 - 感谢任何曾经回答过问题的人,也帮助了我。
答案 0 :(得分:2)
看起来你的tabBarController的viewControllers实际上是UINavigationControllers(你可以通过无法识别的选择器错误看到这一点)。您可能想要查看该控制器自己的视图控制器:
UINavigationController *navController = (UINavigationController *) [self.tabBarController.viewControllers objectAtIndex: 0];
ViewControllerA *controller = [navController.viewControllers objectAtIndex: 0];
[controller setAnnoSelected];
但是,您可能希望考虑使用通知,因为此方法有点脆弱。