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;

}

 

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

posted @ 2016-06-27 22:06  wangwei_Carry  阅读(228)  评论(0编辑  收藏  举报