我讀了很多關於委託並嘗試過,但沒有得到它上班。
你真的試過了什麼?您的LoginViewController必須定義一個簡單的委託協議,並且您的MainViewController必須符合它。
所有你需要做的就是增加一些像這樣的LoginViewController.h以上@interface:
@protocol LoginViewControllerDelegate
- (void)loginViewControllerDidFinish;
@end
它聲明一個方法的協議。然後@interface和@end之間補充一點:
@property (nonatomic, assign) id <LoginViewControllerDelegate> delegate;
這意味着你的登錄視圖控制器將有一個屬性叫做委託,它將指向任何類的一個實例(這就是ID裝置)符合它的委託協議(介於<和>之間的東西)。不要忘記在.m文件裏面輸入@synthesize delegate;
。
現在你需要做的是內部MainViewController.h添加到@interface一行:
@interface MainViewController : UIViewController <LoginViewControllerDelegate>
告訴你MainViewController類符合本LoginViewControllerDelegate委託協議的編譯器。現在在MainViewController.m中實現- (void)loginViewControllerDidFinish;
方法,並在呈現登錄視圖控制器模式地將其委託給自己(login.delegate = self;
)之前。當你登錄的視圖控制器內部完成,您關閉之前,調用委託方法在您委託:
[self.delegate loginViewControllerDidFinish];
就是這樣。還有其他問題嗎?
謝謝,我做了最多的事情,問題是,我無法設置委託=自我,因爲我使用Three20導航器來調用LoginViewController。有任何想法嗎? – Kovu
你是指Three20導航儀的實例嗎?如果是這種情況,你的界面看起來像'@interface MainViewController:UIViewController'。只要將''添加到該行的末尾即可。 –