2009-11-04 90 views
1

我有一個視圖控制器,它在點擊某個按鈕時呈現模態視圖。在關閉模態視圖並重新顯示下面的原始視圖時,我想要調用一個刷新方法。如何將方法從ModalViewController中調用OriginalViewController來自Modal View Controller的調用方法

我知道這有效,如果我在-viewDidAppear中這樣做,但我只希望它發生在模態視圖關閉時,而不是每一次。

回答

3

正如您在View Controller Programming Guide中所見,推薦的方法是使用委派。

你怎麼做是你的,但一個標準方法,因此我們將定義一個協議,如:

@protocol RecipeAddDelegate <NSObject> 
- (void)modalViewControllerDismissed:(ModalViewController *)modalViewController; 
@end 

然後在你的OriginalViewController,您可以實現方法,並採取行動的時候了模態視圖控制器已經被駁回:

- (void)modalViewControllerDismissed:(ModalViewController *)modalViewController { 
    [self refresh]; // or anything you want to do 
} 

作爲一個額外的評論,我掛了指導建議你應該駁回模式不是來自模式本身,而是從打開它的控制器。在這個例子中,他們創建的委託協議有點不同,所以它有原始控制器被告知模態控制器所做操作的方法,並且能夠決定何時關閉它。

+0

鏈接斷開,新的鏈接是:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html – Kalle 2010-09-09 13:56:26

+0

謝謝@卡勒,我剛剛更新了答案。 – pgb 2010-09-09 16:44:22

+1

什麼是「RecipeAddDelegate」? 「OriginalViewController」和「ModalViewController」在哪裏去?誰有實際的* ANSWERS *原始問題的示例代碼。實際的代碼。 – Patricia 2010-10-16 02:51:59

2

查看視圖控制器編程指南,特別是section on dismissing a modal view

當完成時,OriginalViewController應該有一個由ModalViewController調用的協議方法。應該是OriginalViewControllers負責解除模態視圖並執行它自己需要的任何任務,例如刷新本身。

相關問題