作者wfgh (lyle)
看板MacDev
标题Re: [问题] navigation的BACK事件
时间Tue Apr 26 00:37:42 2011
最近才刚学会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)
1F:→ wfgh:要实作delegate的话,还要牵扯到protocol。他就像Java的 04/26 00:45
2F:→ wfgh:interface 04/26 00:45
3F:→ starkite:这两天也是刚把delegate搞懂..实作还是要跟potocol绑一起 04/26 01:07