2010-08-30 93 views

回答

4

有這樣做的兩種基本技術:

使用委託

定義爲您的孩子一個簡單的委託協議。像例如,如果你的孩子來挑選一些字符串從事情的清單,然後做一些事情,如:

@protocol ChildViewControllerDelegate <NSObject> 
-(void) childView: (ChildView*) didPickNameFromList: (NSString*) name; 
@end 

你的父母會簡單地實現該委託協議,將有變化時作出選擇要更新在客戶端。

這是一種非常標準的技術,許多iOS附帶的視圖控制器也使用這種技術。例如,看看ABPeoplePickerNavigationControllerDelegate

使用共享(容器)對象)

,可以使用是使用共享對象,其中子視圖控制器可以改變一個值的其它技術。父視圖控制器創建此對象並保存對它的引用。當它顯示子視圖控制器時,它將對共享對象的引用傳遞給它,以便子對象可以在其上設置值。然後,當父母再次出現時,它可以根據該共享對象的值更新其狀態。

我個人更喜歡技術#1。

0

其實我做了一些不同的事情。

我用子控制器中的parentController的類型聲明瞭一個變量。

而在我推childController之前的parentController我這樣做: objView.parentController = self;

然後我只是調用parentController.variableIwant = something;在兒童控制器和Voile上!

+0

從技術上講,這將工作,但對於最大封裝和可重用性,創建委託是最好的方法 – Brian 2010-09-01 14:33:54

相關問題