Re: [問題] navigation的BACK事件(使用delegate)

看板MacDev作者 (lyle)時間13年前 (2011/04/26 00:37), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/2 (看更多)
最近才剛學會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)

04/26 00:45, , 1F
要實作delegate的話,還要牽扯到protocol。他就像Java的
04/26 00:45, 1F

04/26 00:45, , 2F
interface
04/26 00:45, 2F

04/26 01:07, , 3F
這兩天也是剛把delegate搞懂..實作還是要跟potocol綁一起
04/26 01:07, 3F
文章代碼(AID): #1DjQDOmH (MacDev)
文章代碼(AID): #1DjQDOmH (MacDev)