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;
    
    }

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

  • 相关阅读:
    LeetCode 79. 单词搜索
    LeetCode 1143. 最长公共子序列
    LeetCode 55. 跳跃游戏
    LeetCode 48. 旋转图像
    LeetCode 93. 复原 IP 地址
    LeetCode 456. 132模式
    LeetCode 341. 扁平化嵌套列表迭代器
    LeetCode 73. 矩阵置零
    LeetCode 47. 全排列 II
    LeetCode 46. 全排列
  • 原文地址:https://www.cnblogs.com/code-Officer/p/5621728.html
Copyright © 2011-2022 走看看