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

一直对自定义的 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.再用 我也不一定会用 看情况 多复习

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值