您的位置:首页 > 移动开发 > IOS开发

IOS--Delegate 自定义之个人感悟

2015-07-16 22:26 274 查看
一直对自定义的 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.再用 我也不一定会用 看情况 多复习

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: