zoukankan      html  css  js  c++  java
  • iOS设计中的“代理”

      “代理”--在iOS的开发设计中是一个非常重要的概念,同时又是十分基础的知识。所以,掌握“代理”势在必行!

      以下,结合一个具体的例子,详细认识“代理”:

     1, 图例解释:

    ①:定义两个文本输入框UITextFiled,上面一个,下面一个。

    ②:要求:在下面的输入框中国输入内容时,上面的文本框中实时、同步显示;

    ③:下面的文本输入框以及紫色的背景部分要求是一个独立的,抽取出来的“类”,直接在视图控制器中初始化出一个UIView,其中有一个“UITextFiled”和一个提示“UILable”。

    2,实现功能的整体思路和注意事项:

    ①:下面的输入框中的输入内容一旦有变化,就实时、同步的改变上面的输入框的内容----这就需要对下面的文本框的内容进行“内容改变事件的监听”;应对方法:向下面的UITextFiled添加监听事件,即:

    [bottomTextFiledaddTarget:selfaction:@selector(changeText:) forControlEvents:UIControlEventEditingChanged];

    需要注意监听事件的出触发方式:“UIControlEventEditingChanged”--值改变时,触发。监听事件一旦触发马上执行“changeText”方法。

    ②:“changeText”方法的作用:

    一旦监听到“值改变”,则立刻将当前的下面的文本输入框的内容给到上面的文本输入框;

    ③:一个抽取出来的类如何改变控制器上的控件的状态?此时就到了“代理”发光发热了!

    “代理”:A要做一件事情,可是A的“能力”达不到(一般是指,A不能获取到要控制的对象),这时候,A就要找一个“代理”--B,B必须具备完成A想做的事情的“能力”;

    B要随时根据A的“命令”,去做A想做的事情。这就是“代理”的通俗解释。

    ⑤:如何找到自己的“代理”?

    第一步:要定义一个协议,规定“代理”要执行的方法;

    @protocoltextDelegateProtocol<NSObject>
    
    - (void) deliverText:(NSString *)content;
    
    @end

    第二步:为自己设置一个代理属性,要能够在外部访问(写在.h文件中);

    @property(nonatomic,weak) id<textDelegateProtocol> delegate;

    第三步:找到能替"我"完成事情的对象,让该对象遵守协议,并做我的“代理”;

    BottomView * bView=[[BottomViewalloc] initWithFrame:CGRectMake(0, kHeight-200, kWidth, 200)];
    _bView=bView;
    //======------ 设置代理 ------======
    bView.delegate=self;
        [self.viewaddSubview:bView];
    }
    //遵守代理协议
    @interfaceViewController ()<textDelegateProtocol>
    
    @end

    第四步:让“代理”为我做事;

    #pragma mark - 触发监听事件
    - (void) valueChanged:(UITextField *)tf{
    
        [_bViewchangeContent:tf.text];
    
    }
    
    #pragma mark - 代理方法
    - (void) deliverText:(NSString *)content{
    
    _topTextFiled.text=content;
    
    }

      以上就是在下当前对代理的理解!青山不改,绿水长流。

  • 相关阅读:
    [转]MySQL索引类型
    [转]数据结构(全)
    [转]数据结构基础概念篇
    [转]从零开始搭建创业公司后台技术栈
    将博客搬至CSDN
    编译android源代码(aosp)
    【Android】Fresco图片加载框架(二)————Producer
    【Android】Fresco图片加载框架(一)————源码简要分析
    TSL(SSL)相关内容
    谨慎使用AsyncTask
  • 原文地址:https://www.cnblogs.com/code-Officer/p/5621728.html
Copyright © 2011-2022 走看看