IOS--Delegate 自定义之个人感悟
来源:互联网 发布:linux libxml2 安装 编辑:程序博客网 时间:2024/05/17 06:53
一直对自定义的 delegate 不是特别明白 找了大神讲解一下之后 有所顿悟 记下 为了以后理解方便
捋一下思路 举个栗子
A 开了公司 需要招人 就写了合同 delegate 并设置了应聘者的属性 将合同贴在了电线杆上 等人来 (在自身的.h 文件中写合同 和属性)
B 无业游民 发现了 电线杆的合同 觉得不限学历条件 活也简单 就接下合同 找 A 来了 (决定遵守协议)
A 看 B 长得挺好看 也遵守 delegate 合同 就同意了 B 签字遵守 合同生效 (协议生效)
A 告诉B “我需要喝水的时候 说 “喝水” ,你就干活 ” (这就是时机)
在代码中的体现就是
1.A 公司招聘
A 就是 SecondViewControllerDelegate 公司#import <UIKit/UIKit.h>#warning 代理传值的第一步,定义协议@protocol SecondViewControllerDelegate <NSObject>//这个是我协议里面的方法(合同)-(void)passValue:(NSString *)text;@end
2.对应聘者的要求
@interface SecondViewController : UIViewController// #warning 代理传值第二步, 属性 对应聘者的要求@property (nonatomic,assign)id <SecondViewControllerDelegate>delegate;@end
3.B B 看见了合同觉得他可以 愿意成为代理对象 .m 中
// B就是 self; secondVC.delegate就是公司合同 secondVC.delegate = self;//写在干活的人的文件里面
4.A 看了 B 觉得也行 就说 你签个字 我们就是可以了 于是 B 就签了自己的名字 在自己身上挂了象征遵守协议的牌子 .h 中
#warning 代理传值第四步 代理对象遵循协议@interface FirstViewController ()<SecondViewControllerDelegate>
5.B 又看了看自己要干的活 .m 中
#warning 代理传值第五部 实现协议中的方法 要干的活-(void)passValue:(NSString *)text{ self.label .text=text;}
5.A 老板说了 当我说”喝水的时候” 就是你干活的时机 .m 中
-(void)handleButton:(UIButton *)sender{#warning 代理传值第六步 让代理实现协议中的方法 //首先判断代理有没有实现协议中的方法 在 pop 之前让代理干活 if ([self.delegate respondsToSelector:@selector(passValue:)]) { //这是要做的事 [self.delegate passValue:self.textField.text]; //上面的内部实现 /* { self.label.text = text; 2.= text 等于 self.textField text; } */ } [self.navigationController popViewControllerAnimated:YES];}
总结:
/*
1.代码只是大概说明写在什么位置
2.搞清楚谁是主人 谁是仆人
3.还是需要多理解
4.再用 我也不一定会用 看情况 多复习
*/
0 0
- IOS--Delegate 自定义之个人感悟
- IOS图像5之UIView动画、自定义转场动画、delegate
- IOS学习之——自定义代理 delegate
- IOS学习之——自定义代理delegate
- IOS之Delegate
- 个人对 ios 中 delegate 认识详解
- 关于iOS Delegate的个人理解
- 个人随笔之---开发感悟
- iOS 开发学习之 delegate
- iOS之代理delegate使用
- IOS for delegate 之我见
- iOS之Delegate设计模式
- 对iOS 中自定义delegate的理解
- iOS中自定义delegate的实现
- iOS 之美:iOS Delegate 使用五步曲
- iOS 之美:iOS Delegate 使用五步曲
- iOS 之美:iOS Delegate 使用五步曲
- 个人感悟
- Struts获取HttpServletRequest / HttpSession / ServletContext / HttpServletResponse对象
- 使tableview每个section显示不同行数的方法
- oc三种传值方式:通知传值,代理传值,block传值
- Partition(hdu4651)2013 Multi-University Training Contest 5----(整数拆分一)
- 调度时机分析之被动调度(之中断处理返回)
- IOS--Delegate 自定义之个人感悟
- noi2015模板-决策单调性
- Linux 设备驱动之 DTS 描述的资源
- JS的面向对象的基础
- VC运行库依赖导致的InnoSetup安装程序调用DLL报错:无法导入DLL
- srm 540
- 1.3 编程范式
- Intelhaxm启动却无法加速的问题
- HDU 2196 Anniversary party (树形DP 水题)