2010-03-09 58 views
1

我的iPhone應用程序由具有4個主選項卡的主TabController組成。我有一種情況,ViewController A加載ViewController B(使用pushViewController)。我現在需要找回的ViewController A和和B.UIViews在另一個UIViewController中觸發一個動作

上觸發動作

再回到A是容易的所有我需要做的就是: -

self.tabBarController.selectedIndex = 0; 
[self.navigationController popViewControllerAnimated:YES]; 

這進而導致一個的ViewController可見。

但是,如何讓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]; 

但到目前爲止,還沒有喜悅。

任何想法將不勝感激。

感謝 謝麗爾

附:這是一個很好的幫助網站 - 感謝任何曾經回答過你問題的人,因爲你也幫助過我。

回答

2

它看起來像你的tabBarController的viewControllers實際上是UINavigationControllers(你可以通過無法識別的選擇器錯誤來看到這一點)。你可能想看看該控制器自己的視圖控制器:

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

[controller setAnnoSelected]; 

您可能要考慮的通知,而不是這樣做,但是,因爲這種方法是有點脆弱。

+0

感謝您的快速響應 - 當您說通知時,您的意思是使用[[NSNotificationCenter defaultCenter] addObserver:self ...因爲我有點不確定我放在哪裏?我是否將它放在FormA上,然後讓FormB響應它? – Cheryl 2010-03-09 21:04:18

+0

是的,將formA註冊爲帶有-defaultCenter的觀察者,並讓formB發佈通知。 – 2010-03-11 12:57:39

相關問題