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(, kHeight-, kWidth, )];
_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; }
以上就是在下当前对代理的理解!青山不改,绿水长流。
iOS设计中的“代理”的更多相关文章
- iOS开发 中的代理实现
iOS开发 中的代理实现 关于今天为什么要发这篇文字的原因:今天在和同事聊天的时候他跟我说项目中给他的block有时候不太能看的懂,让我尽量用代理写,好吧心累了,那就先从写个代理demo,防止以后他看 ...
- 学习iOS设计--iOS8的颜色、文字和布局学习
在去年,Apple针对新时代用户彻底更新了其设计语言.现在的设计语言相对之前大为简化,能够让设计师将精力集中到动画和功能上,而不是繁复的视觉细节上. 很多人都曾问过我:设计应当如何入门?成为一名优秀设 ...
- 关于iOS APP中网络层的设计
在iOS开发中,请求网络数据,处理获得的数据是很常见的功能,但是很少有资料会讨论关于网络的处理应该放在MVC中得哪个层中. 我在网上Google了一番,记下了几个觉得比较不错的链接.现记录如下: ht ...
- iOS 11 APP 设计中的几个 UI 设计细节
Apple 官网看了 iOS 11 的介绍,发现有不少的更新哦,比如控制中心.Siri.Live Photo 等等,总体来说都有很多不错的体验,不过本文不介绍功能,只说视觉界面. 在 iOS 11 的 ...
- iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包
本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类 1. 1 如何在swift的类中使用oc类 1.2 如何在swift中实现oc的代理 ...
- iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法
1. Swift与oc混编译具体怎么实现,这儿我就不重复讲出了,网上有大把的人讲解. 2. 在swift与OC混编的编译环境下, oc类不能访问swift创建类中的代理? 解决方法如下: 在代理的头部 ...
- iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】
在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...
- iOS开发中的MVC设计模式
我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开发是 ...
- iOS开发中文件的上传和下载功能的基本实现-备用
感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...
随机推荐
- gettextize与glib-gettextize的使用
gettextize在各种场合都可以使用,用于支持多语言开发 glib-gettextize运行后,会修改po/Makefile.in.in文件,导致后续都必须运行glib-gettextize ge ...
- 对象Clone
//================================================= // File Name : Clone_demo //-------------------- ...
- 只是为了好玩——Linux之父林纳斯自传
http://yuedu.163.com/source/d227d1ce35d248b1a00471c11464d5d9_4
- Robot Framework--03 案例及资源区
转自:http://blog.csdn.net/tulituqi/article/details/7585387 这个区域是我们案例结构设计的一个关键区域,这里可以清晰的看到我们整个工程的结构. 还记 ...
- 使用docker exec 就可以进入container,例如:docker exec -it <container_id> /bin/bash
使用docker exec 就可以进入container,例如:docker exec -it <container_id> /bin/bash
- osharp3使用经验:整合DbContextScope 文章 1
osharp3的事务处理是跳过savechangeing方法来控制的,没有DbContextScope专业 DbContextScope管理dbcontext的优劣本文不讨论 整合过程: 1.在.Da ...
- AndroidManiFast 字段意义
每个Activity都要在本文件中注册. <Activity>下的<Intent-filter>中. 两个字段的意思是: <action android:name=&qu ...
- Java并发编程核心方法与框架-TheadPoolExecutor的使用
类ThreadPoolExecutor最常使用的构造方法是 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAli ...
- echarts X轴数据显示不全问题
很奇怪,X轴只显示了部分节点.没有显示全. 在xAxis上加上下面的配置就能解决: xAxis: [ { type: 'category', axisLabel :{ interval:0 }, // ...
- Media Wiki
https://www.mediawiki.org/wiki/Help:Images/zh https://www.mediawiki.org/wiki/Manual_talk:Image_admin ...