看板 MacDev 關於我們 聯絡資訊
最近才剛學會delegate用法 小弟也是初學者 有錯還請板上各位前輩指正 =============== 以下切入正題 ===================== 假設foo有兩個member如下 @interface foo NavigationController *aNav; MyViewController *myViewController; @end ================以下code都implemet在foo.m============================ 在foo裡的某段code,我們讓aNav push了一個view [aNav pushViewController:aViewController animated:YES]; 如果之後要在foo裡處理pop view這件事的話 (意即在foo裡叫aNav去pop view) 我們就要在assign一個delegate給myViewController 而這個delegate就是self myViewController.delegate = self; 因為myViewController要問foo:「請問pop view這件事怎麼做」 然後foo就會去call我們處理pop view的method 所以在foo.m裡要寫一個處理這件事的method - (void)popView { [self.aNav popViewControllerAnimated:YES] } ===========以下implemet在MyViewController.m========================= 那麼myViewController要怎麼問foo呢? 就在你想要pop的地方 寫上 [self.delegate popView]; 這他就會去call foo的popView了 (其實也可以寫成[self.aNav popViewControllerAnimated:YES]; 只不過為了更強調delegate好用的地方 所以特意多寫一個method) ============================================================== 以上就是一個delegate的例子 當然以這例子來講 不需要用到delegate myViewController就有一個property是他的parent了 只在這樣寫就可以pop了 [self.navigationController popViewControllerAnimated:YES]; ========================================================== 當你寫了很多class 物件裡又包了很多層物件的時候 就是delegate發揮的時候了! 以上 有錯請指正 感謝:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.62.201 ※ 編輯: wfgh 來自: 114.32.62.201 (04/26 00:44)
wfgh:要實作delegate的話,還要牽扯到protocol。他就像Java的 04/26 00:45
wfgh:interface 04/26 00:45
starkite:這兩天也是剛把delegate搞懂..實作還是要跟potocol綁一起 04/26 01:07