0
在我的導航的應用程序,有一個按鈕,如果按下,將視圖更改爲detailViewController。這裏用戶可以設置幾個選項。其中一個選項是bool值。當我從detailViewController返回時,我怎麼能看到這個布爾值是什麼?從detailViewController獲取布爾值的最佳方式是什麼?
在我的導航的應用程序,有一個按鈕,如果按下,將視圖更改爲detailViewController。這裏用戶可以設置幾個選項。其中一個選項是bool值。當我從detailViewController返回時,我怎麼能看到這個布爾值是什麼?從detailViewController獲取布爾值的最佳方式是什麼?
創建一個protocol(DetailViewDelegate
?)並在您的DetailViewController
中創建一個delegate屬性。當您實例化視圖控制器時,請將委託屬性設置爲self
,並使用該屬性將消息發送回您的主視圖控制器。唯一棘手的部分是您需要將委託屬性聲明爲「assign」,以便您不會在詳細視圖和主視圖之間創建保留循環。
DetailViewController.h:
@class DetailViewController; // Forward Declaration.
@protocol DetailViewDelegate
- (void)detailViewController:(DetailViewController *)controller didChangeBool:(BOOL)theBool;
@end
@interface DetailViewController : UIViewController {
id <DetailViewDelegate> delegate;
}
@property (assign) id <DetailViewDelegate> delegate;
@end
這僅僅是接口,但它應該讓你大部分的方式存在。設置詳細視圖的delegate
屬性並在您的主視圖中實現detailViewController:didChangeBool:
方法,就是這樣。
爲了回答您的評論的問題:
delegate
屬性設置爲self
。detailViewController:didChangeBool:
方法添加到您的主視圖控制器。
你可以展示一些關於如何做到這一點的代碼? – 2010-10-08 22:42:07
第二行的目的是什麼?它真的有必要嗎?我在「detailViewController」之前收到一個錯誤消息,說「Expected」)' – 2010-10-09 00:15:50
這不是必須的,它是爲你的委託對象聲明一個正式的接口,除非你有充分的理由去除它,但你應該把它作爲一個調試它確保你的委託實現所有你認爲將要實現的方法我編輯了代碼以使警告消失 – kubi 2010-10-09 01:15:24