iOS--《传值方法》之代理传值

作者: 蕾蕾是女神 | 来源:发表于2016-06-10 22:29 被阅读2308次

说明:代理传值一般在反向传值中使用。

本贴的例子是:有A和B两个界面,要实现的效果就是先让A跳转到B,然后B中有个颜色的参数,当B跳转到A时,把这个颜色的参数传递给A,在A中利用这个颜色改变自己界面的颜色。

第1步:在发送者(界面B)中,制定协议(在.h头文件中声明)
// 协议名一般以本类的类名开头+Delegate (包含前缀)
 @protocol ConfigViewControllerDelegate <NSObject>
// 声明协议方法,一般以类名开头(不需要前缀)
- (void)changeBgColor:(UIColor *)color;
第2步:在发送者(界面B)中的.h文件中代理协议。
@interface ConfigViewController : UIViewController
// id即表示谁都可以设置成为我的代理
@property (nonatomic,weak) id<ConfigViewControllerDelegate> delegate;
 // ARC使用weak,MRC使用assign
@end
第3步:在发送者(界面B)中的方法中通知代理(最重要的步骤
  //这一步一般是在B跳转到A的方法中实现的,我是在B中创建了一个Button,让这个通知代理在Button中跳转方法中实现。 
 if ([self.delegate respondsToSelector:@selector(changeBgColor:)]) { 
    // 加入if语句就是先判断在界面A中是否有changeBgColor这个方法,当有这个方法的时候,才进行代理传值。
    //一般会先实例化出一个color的对象,在进行代理传值的时候,是带着这个color一起传递过去的。
    [self.delegate changeBgColor:color];
  //这里的self是界面B,self.delegate就是界面A了(在第4步和第5步的设置中设置了)
}
第4步:在接收者(界面A)中遵守协议。
  @interface ViewController () <ConfigViewControllerDelegate>
第5步:在接收者(界面A)中设置自己成为代理。
  ConfigViewController *testVC = [[ConfigViewController alloc] init];
  testVC.delegate = self;
第6步:在接受者(界面A)中实现协议中的方法。
  - (void)changeBgColor:(UIColor *)color{
  self.view.backgroundColor = color;
  }

附:常用传值方法:
block传值
代理传值
正向传值
通知中心传值
单例类传值

相关文章

  • iOS--《传值方法》之代理传值

    说明:代理传值一般在反向传值中使用。 本贴的例子是:有A和B两个界面,要实现的效果就是先让A跳转到B,然后B中有个...

  • iOS-传值方式

    传值方式:1、属性传值 方法传值2、代理传值3、单例传值 4、通知传值 NSNotificationCente...

  • Swift界面传值

    Swift中界面传值的方法 主要有三种 1.代理传值2.闭包传值(即OC中的Block) 属性传值 代理传值 F...

  • iOS 传值方法(属性传值、代理传值、Block、通知、单例)

    iOS 传值方法(属性传值、代理传值、Block、通知、单例)简单的介绍一下几个传值方式 1、属性传值 在传值的时...

  • 代理

    不同页面间传值是必不可少,传值的方式有很多(方法传值,属性传值,代理传值,单例传值) ,这里主要总结下属性传值和代...

  • Swift常用的界面传值(属性传值、协议传值、闭包传值)

    1、属性传值 属性传值多用于正向传值(A->B) 2、代理传值 代理传值多用于反向传值(B->A) 3、闭包传值 ...

  • iOS开发-block传值

    block传值步骤比代理传值步骤简便,实际开发中经常使用到。 block传值分为block属性传值和block方法...

  • iOS页面间逆传值

    页面间传值有两种: 正向传值(利用属性传值就可以了,很简单) 逆向传值(有3种常用的方法) 代理传值 block传...

  • iOS--《传值方法》之正向传值

    正向传值方法是传值方法里面最简单,最直观的一个方法。例子如下: 第1步:现在接收者中的.h文件中公开声明一个属性。...

  • iOS传值方法对比,代理,通知,block,kvo

    很久之前写了一份传值的文章- 传值 里面记录了方法传值,代理,通知以及Block传值。不够全面,还有KVO没有介绍...

网友评论

  • 金子璇:写的真心好,加油!
  • feng_dev:写的很好啊,不过我发现了第二步,好像是写在 。h 文件里面的吧 ,标题和代码不符啊,
    写的我真心喜欢,哈哈
    蕾蕾是女神:@Developer_峰 谢谢赞美。确实是用心总结的,思路和代码追求清晰。
    蕾蕾是女神:@Developer_峰 已经修改啦
  • 唐昊楷:写几个block 传值呗
    蕾蕾是女神: @唐昊楷 已推出block传值方法,敬请雅正。
    唐昊楷:@蕾蕾是女神 thanks,
    蕾蕾是女神: @唐昊楷 好的,下午推出。
  • 神经骚栋:你的努力终究会有人看到,博客之路坚持下去…加油…但是你的字体好像有点大,可以用五个#就好……😂😂😂
    蕾蕾是女神: @神经骚栋 👌👌好的好的,我会多多注意的,谢谢你的建议。

本文标题:iOS--《传值方法》之代理传值

本文链接:https://www.haomeiwen.com/subject/iovsdttx.html