ios delegate

之前一直对iOS的delegate不是很明白,一直在网上找例子看想了解清楚,但一直没理解。今天做项目的时候碰到了需要使用delegate的时候,没办法只能自己硬着头皮试试了。凭着之前对delegate的理解,自己慢慢琢磨现在算是得出一点经验吧,分享一下。




上图中,popover后面的是主view controller,popover里面装的是第二个viewcontroller,我们的目的是通过点击popover中的按钮在主view controller中实现对应的方法。


首先,先在第二个viewcontroller的.h头文件中申明我们的delegate:



[cpp]  view plain copy
  1. @protocol MSelectToolViewControllerDelegate  
  2.   
  3. - (void) TOOL_MEASURE_LINE;  
  4. - (void) TOOL_MEASURE_FREE_LINE;  
  5.   
  6. @end  


然后,设置一个可以set、get的变量:


[cpp]  view plain copy
  1. @property (nonatomic, retain) id<MSelectToolViewControllerDelegate> delegate;  


再申明popover中按钮对应的方法,(直接从xib文件连线就可以完成的):


[cpp]  view plain copy
  1. - (IBAction)measureLineTool:(id)sender;  
  2. - (IBAction)measureFreeLineTool:(id)sender;  
[cpp]  view plain copy
  1.   

然后直接在第二个viewcontroller的.m实现文件中具体实现按钮的方法:


[cpp]  view plain copy
  1. - (IBAction)measureLineTool:(id)sender {  
  2.     [delegate TOOL_MEASURE_LINE];  
  3. }  
  4.   
  5. - (IBAction)measureFreeLineTool:(id)sender {  
  6.     [delegate TOOL_MEASURE_FREE_LINE];  
  7. }  


本例中是直接调用先前delegate申明的方法。


接下来的工作在主viewcontroller中完成了。。。。


在主view controller的.h头文件中import进来第二个view controller的.h头文件

并在主viewcontroller要遵守的协议中加入之前定义的delegate的名称


[cpp]  view plain copy
  1. @interface MotiConnectViewController : UIViewController<UIScrollViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIPopoverControllerDelegate, MSelectToolViewControllerDelegate>  


最后在主viewcontroller中设置Delegate的委托对象并实现Delegate中定义的方法,类似这样:


[cpp]  view plain copy
  1. MSelectToolViewController *mSelectToolViewController = [[MSelectToolViewController alloc] initWithNibName:nil bundle:nil];  
  2.     mSelectToolViewController.delegate = self;  

[cpp]  view plain copy
  1. - (void)TOOL_MEASURE_LINE  
  2. {  
  3.     //在这里该干嘛干嘛,填入你想要实现的代码  
  4. }  
  5.   
  6. - (void)TOOL_MEASURE_FREE_LINE  
  7. {  
  8.     //在这里该干嘛干嘛,填入你想要实现的代码  
  9. }  




上面是我个人通过这次码代码过程中对ios中delegate的理解,仅供大家参考。

文笔描述功力比较水,可能讲的不清楚会误导到大家,有疑问的可以回复我或参考其他大牛对delegate讲解的帖子,这里就不在赘述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值