Re: [問題] navigation的BACK事件(使用delegate)
最近才剛學會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
04/26 00:45, 1F
→
04/26 00:45, , 2F
04/26 00:45, 2F
→
04/26 01:07, , 3F
04/26 01:07, 3F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):