“代理”--在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设计中的“代理”的更多相关文章

  1. iOS开发 中的代理实现

    iOS开发 中的代理实现 关于今天为什么要发这篇文字的原因:今天在和同事聊天的时候他跟我说项目中给他的block有时候不太能看的懂,让我尽量用代理写,好吧心累了,那就先从写个代理demo,防止以后他看 ...

  2. 学习iOS设计--iOS8的颜色、文字和布局学习

    在去年,Apple针对新时代用户彻底更新了其设计语言.现在的设计语言相对之前大为简化,能够让设计师将精力集中到动画和功能上,而不是繁复的视觉细节上. 很多人都曾问过我:设计应当如何入门?成为一名优秀设 ...

  3. 关于iOS APP中网络层的设计

    在iOS开发中,请求网络数据,处理获得的数据是很常见的功能,但是很少有资料会讨论关于网络的处理应该放在MVC中得哪个层中. 我在网上Google了一番,记下了几个觉得比较不错的链接.现记录如下: ht ...

  4. iOS 11 APP 设计中的几个 UI 设计细节

    Apple 官网看了 iOS 11 的介绍,发现有不少的更新哦,比如控制中心.Siri.Live Photo 等等,总体来说都有很多不错的体验,不过本文不介绍功能,只说视觉界面. 在 iOS 11 的 ...

  5. iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包

    本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类 1. 1 如何在swift的类中使用oc类    1.2  如何在swift中实现oc的代理 ...

  6. iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法

    1. Swift与oc混编译具体怎么实现,这儿我就不重复讲出了,网上有大把的人讲解. 2. 在swift与OC混编的编译环境下, oc类不能访问swift创建类中的代理? 解决方法如下: 在代理的头部 ...

  7. iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

                   在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...

  8. iOS开发中的MVC设计模式

    我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开发是 ...

  9. iOS开发中文件的上传和下载功能的基本实现-备用

    感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...

随机推荐

  1. js024-最佳实践

    js024-最佳实践 本章内容: 可维护的代码 保证代码性能 部署代码 24.1 可维护性 24.1.1 代码的可维护性 代码可维护性的特征: 特性 说明 可理解性 其他人可以理解它的用途和一般途径 ...

  2. 如何以nobody用户执行命令?

    最近在logstash中使用nobody用户启动logstash,一想,nobody用户的shell不是/sbin/nologin吗? 不能登录执行命令呀? 于是看了一下它的启动脚本,是使用其他方式进 ...

  3. windows7-SQLyog 安装图解

    双击: 双击已下载的SQLyog Enterprise 安装文件,点击“next”,选择“I accept...”,勾选安装组件,选择安装目录,等待安装完成. 协议:选择我接受 选择操作   选择路径 ...

  4. ef to sqlite 实际开发问题终极解决方法

    版本问题 vs安装问题 x64/x86 发布问题 针对开发中遇到的问题,通过一下方法解决: 1.sqlite下载地址http://system.data.sqlite.org/index.html/d ...

  5. LDA(转发)

    主题模型-LDA浅析 分类: 数据挖掘 机器学习2012-09-03 14:09 24937人阅读 评论(16) 收藏 举报 文档allocationsemanticeach算法网络 上个月参加了在北 ...

  6. codeforces 723B Text Document Analysis(字符串模拟,)

    题目链接:http://codeforces.com/problemset/problem/723/B 题目大意: 输入n,给出n个字符的字符串,字符串由 英文字母(大小写都包括). 下划线'_' . ...

  7. php preg_match 过滤字符

    $f = preg_match("/g3watches/",$date[0]['desc']); if ($f='1') { $this->error(L('不好意思,输入有 ...

  8. ViewController respondsToSelector:]: message sent to deallocated instance

    今天突然遇到这个问题,其实昨天下班的时候就已经有这个问题了, 就是先进入一个画页,然后再快速离开这个画页再进入其他画页就出现这个错误 了 找了好久也没有找出问题来,一开始以为是网络任务没有cancel ...

  9. javascript函数的定义与执行

    要理解javascript函数的定义与执行,首先需要知道这几个重要的概念,现在可以先知道稍后再理解! 函数的执行环境(excution context).活动对象(call object).作用域(s ...

  10. CentOS/RHEL安装oracle 11G

    系统:RHEL6.5 + oracle11G x86_64 (CentOS上安装与此大同小异) 使用本地yum源(提前下载pdksh包),具体过程参考(适用于RHEL/CentOS):http://w ...