2011-03-27 22 views
0

對於Obj-C,我試圖觸發viewControllerB實例的方法myMethod。 => viewControllerB在viewControllerA中實例化。 =>我試圖從AppDelegate中 調用myMethod的=>看來,反正我試圖做到這一點,它的觸發myMethod的在viewControllerB從AppDelegate訪問班級的正在運行的實例

的新實例

所以現在的問題是:如何將消息發送到viewController的現有實例?

請使用代碼示例進行說明,因爲我對Obj-C還不是很滿意。

謝謝!

viewControllerA.m:

if (_viewControllerB == nil) { 
    self.viewControllerB = [[[ViewControllerB alloc] initWithNibName:@"ViewControllerB" bundle:[NSBundle mainBundle]] autorelease]; 
} 

viewControllerB.m:

- (void)myMethod{ NSLog(@"myMethod!"); }

AppDelegate.m:不知道是什麼恩把這裏:(

+0

您需要向我們展示你的代碼。 – 2011-03-27 16:23:40

+0

添加代碼... :) – 2011-03-27 16:31:06

回答

1

要得到相同的實例

的(在self.navigationController.viewControllers的UIViewController *視圖)

{

if(view isKindOfClass:[viewControllerB class]) 
{ 
    [view yourmethodname]; 
} 

}

+0

無法獲取這個代碼...我應該把它放在我的AppDelegate嗎? – 2011-03-27 16:54:37

+0

我想訪問現有的實例方法從appDelegate。 – 2011-03-27 16:57:10

+0

在這個代碼我檢查導航控制器子視圖,如果它返回我相同的類,因爲你發起然後我可以在同一個實例上調用方法...爲了簡單起見,首先刪除如果阻塞,然後NSLog查看for循環並檢查控制檯。 – saadnib 2011-03-27 16:59:01

0

,如果你想在你的viewControllerB的同一個實例上調用該函數,然後你必須從你添加它的地方取出那個實例。

+0

我該怎麼做? – 2011-03-27 16:36:24

+0

實際上,我沒有看到您創建viewControllerB實例的位置以及添加它的位置,也是您在窗口中添加的viewControllerA。 – saadnib 2011-03-27 16:38:38

+0

嗯,我的viewControllerA在啓動時是可見的(它是屬於tabBarController的NavigationController的子視圖) viewControllerA包含一個tableView,當選擇這個tableview的一個單元格時調用viewControllerA.m代碼 – 2011-03-27 16:40:27