我無法將數據從childView傳遞到navigationController中的父視圖,當用戶單擊後退按鈕時。從childView傳遞數據做父視圖!
我試過使用viewWillDisappear,它沒有被調用。
任何意識?
我無法將數據從childView傳遞到navigationController中的父視圖,當用戶單擊後退按鈕時。從childView傳遞數據做父視圖!
我試過使用viewWillDisappear,它沒有被調用。
任何意識?
有這樣做的兩種基本技術:
使用委託
定義爲您的孩子一個簡單的委託協議。像例如,如果你的孩子來挑選一些字符串從事情的清單,然後做一些事情,如:
@protocol ChildViewControllerDelegate <NSObject>
-(void) childView: (ChildView*) didPickNameFromList: (NSString*) name;
@end
你的父母會簡單地實現該委託協議,將有變化時作出選擇要更新在客戶端。
這是一種非常標準的技術,許多iOS附帶的視圖控制器也使用這種技術。例如,看看ABPeoplePickerNavigationControllerDelegate
。
使用共享(容器)對象)
,可以使用是使用共享對象,其中子視圖控制器可以改變一個值的其它技術。父視圖控制器創建此對象並保存對它的引用。當它顯示子視圖控制器時,它將對共享對象的引用傳遞給它,以便子對象可以在其上設置值。然後,當父母再次出現時,它可以根據該共享對象的值更新其狀態。
我個人更喜歡技術#1。
其實我做了一些不同的事情。
我用子控制器中的parentController的類型聲明瞭一個變量。
而在我推childController之前的parentController我這樣做: objView.parentController = self;
然後我只是調用parentController.variableIwant = something;在兒童控制器和Voile上!
從技術上講,這將工作,但對於最大封裝和可重用性,創建委託是最好的方法 – Brian 2010-09-01 14:33:54