zoukankan      html  css  js  c++  java
  • ios 页面传值4种方式(四) 之通过delegate(代理)

    这是ios里最常用的设计模式了,简直贯穿了整个cocoa touch框架.废话不多说,直接上代码:

    场景是:

    A--打开--B;

    B里输入数值,点击--返回--A;

    A里显示B输入的值;

    △在开始写之前得理清楚以下几个关系:

    1:代理要做什么:

       代理要修改A的值;

    2:谁需要委托:

        换句话说就是谁要做什么而不能做.

        我们的需求是需要B返回A的时候把输入的值传递给A, 那么就是B需要委托,要传递数值给A,在A的label里显示这个数值,而它没办法去完成的; 

    3:谁通过代理去做:

      B需要通过代理去修改A里Label的值.

    4:谁委托谁去做

        B委托A去修改值;

    理清这几个关系后,我们的代码就可以按照这个套路去编写了:

    一:代理要做什么

    B.h

    声明一个协议,这个代理要做的是修改Label的值;

    @protocol BDelegate
    <NSObject> - (void)changeLabelText: (NSString *)text; @end

    二: 谁需要代理: 

    B需要一个代理

    B.h

    @property (nonatomic, assign) id<BDelegate> delegate;
    

     三:谁通过代理去做

    B.m

    [self.delegate changeLabelText: textField.text];
    

     四:做什么

    A.h里加入协议

    @interface A : UIViewController <BDelegate>
    

    A.m里定义代理

        B *B = [[B alloc]init];
        B.delegate = self;//B的委托A去做(self即A)
    

     A.m实现这个协议方法

    - (void)changeLabelText:(NSString *)text{
        self.label.text = text;//修改label的text值 text即在B里修改的值
    }
    

    That's all.

     源码下载:http://vdisk.weibo.com/s/yV3nUa6epUv7x

    请复制后黏贴到地址栏打开.

  • 相关阅读:
    chrome扩展及应用开发 李喆pdf完整版
    Chrome插件(扩展)开发资料
    Fiddler下载地址
    如果没有 Android 世界会是什么样子?
    一张图告诉你:Android系统哪代强?
    Android开发的16条小经验总结
    Android上实现MVP模式的途径
    Android事件总线还能怎么玩?
    Android性能优化典范(二)
    安卓listView实现下拉刷新上拉加载滑动仿QQ的删除功能
  • 原文地址:https://www.cnblogs.com/mohe/p/3283147.html
Copyright © 2011-2022 走看看