2010-02-22 48 views
0

我的協議:如何調用委託對象?

@protocol ElectricalSystemEngineDelegate 
-(void)didRequestMainMenu:(id)sender; 
@end 

我爲了處理我rootView控制器內模態視圖控制器的設計解僱該協議。我rootView控制器採用這個協議,並聲明如下:

#import "ElectricalSystemEngineDelegate.h" 

@interface RootViewController: UIViewController <ElectricalSystemEngineDelegate> 
//other ivars & methods including instantiation of my modalViewController. 

我用一個徹頭徹尾的現成:

-(IBAction)displayElectricalViewController 

-to顯示模態控制器......工作正常。我,但是,困惑於如何與這個協議來處理控制器解僱的執行進一步進行..

//The implementation of my root view controller. 
-(void)didRequestMainMenu:(id)sender { 
    [self dismissModalViewControllerAnimated: YES]; 
} 

很顯然,我正確地使用規定的方法實現的協議。我希望該方法在調用時關閉視圖控制器。我也希望通過點擊modalViewController中的後退按鈕來調用它。

正如蘋果文檔所言:「在某些情況下,對象可能願意通知其他對象其行爲,以便他們可以採取任何可能需要的抵押措施。」我的目標是讓我的ElecticalViewController通知它的父級(RootViewController)它應該被解散。應該通過點擊後退按鈕來觸發解僱。對象如何完成此通知?

回答

2

您需要將id <ElectricalSystemEngineDelegate> delegate屬性添加到您的ElectricalViewController。

然後,您需要在創建ElectricalViewController後將自己(RootViewController)分配給該委託。

然後,在處置ElectricalViewController時調用[delegate didRequestMainMenu]。

然後你需要爲你的RootViewController創建一個方法didRequestMainMenu。

+0

像夢一樣工作。那是我錯過的唯一難題。謝謝!! – 2010-02-22 21:16:36