IOS--Delegate 自定义之个人感悟
2015-07-16 22:26
274 查看
一直对自定义的 delegate 不是特别明白 找了大神讲解一下之后 有所顿悟 记下 为了以后理解方便
捋一下思路 举个栗子
A 开了公司 需要招人 就写了合同 delegate 并设置了应聘者的属性 将合同贴在了电线杆上 等人来 (在自身的.h 文件中写合同 和属性)
B 无业游民 发现了 电线杆的合同 觉得不限学历条件 活也简单 就接下合同 找 A 来了 (决定遵守协议)
A 看 B 长得挺好看 也遵守 delegate 合同 就同意了 B 签字遵守 合同生效 (协议生效)
A 告诉B “我需要喝水的时候 说 “喝水” ,你就干活 ” (这就是时机)
在代码中的体现就是
1.A 公司招聘
2.对应聘者的要求
3.B B 看见了合同觉得他可以 愿意成为代理对象 .m 中
4.A 看了 B 觉得也行 就说 你签个字 我们就是可以了 于是 B 就签了自己的名字 在自己身上挂了象征遵守协议的牌子 .h 中
5.B 又看了看自己要干的活 .m 中
5.A 老板说了 当我说”喝水的时候” 就是你干活的时机 .m 中
总结:
/*
1.代码只是大概说明写在什么位置
2.搞清楚谁是主人 谁是仆人
3.还是需要多理解
4.再用 我也不一定会用 看情况 多复习
*/
捋一下思路 举个栗子
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.再用 我也不一定会用 看情况 多复习
*/
相关文章推荐
- ios8/sdk8/xcode6/iphone6(+)适配
- iOS开发内存管理
- (七十四)iOS8之前使socket可以后台运行的方法
- (七十四)iOS8之前使socket可以后台运行的方法
- iOS 创建Label 提示“已成功下载”
- (七十三)iOS本地推送通知的实现
- (七十三)iOS本地推送通知的实现
- ios感想
- iOS的主要框架介绍
- IOS模拟器点击fieldText 不弹出软键盘
- [译] 二、开始iOS编程之前,你还需要做什么?
- [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]
- iOS前期OC训练OC_02继承,便利构造器,初始化方法
- iOS前期OC训练OC_02可见度,方法
- iOS前期OC训练OC_01类和对象
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS学习第一天
- iOS学习笔记--(c基础2)
- iOS 录音并播放,使用AFN发送文件
- VT-x is disabled in the BIOS. (VERR_VMX_MSR_VMXON_DISABLED).