UIViews在另一个UIViewController中触发一个动作

时间:2010-03-09 20:40:19

标签: iphone

我的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。这是一个很好的帮助网站 - 感谢任何曾经回答过问题的人,也帮助了我。

1 个答案:

答案 0 :(得分:2)

看起来你的tabBarController的viewControllers实际上是UINavigationControllers(你可以通过无法识别的选择器错误看到这一点)。您可能想要查看该控制器自己的视图控制器:

UINavigationController   *navController = (UINavigationController *) [self.tabBarController.viewControllers objectAtIndex: 0];
ViewControllerA          *controller = [navController.viewControllers objectAtIndex: 0];

[controller setAnnoSelected];

但是,您可能希望考虑使用通知,因为此方法有点脆弱。