ios 页面传值4种方式(四) 之通过delegate(代理)
这是ios里最常用的设计模式了,简直贯穿了整个cocoa touch框架.废话不多说,直接上代码:
场景是:
A--打开--B;
B里输入数值,点击--返回--A;
A里显示B输入的值;
△在开始写之前得理清楚以下几个关系:
1:代理要做什么:
代理要修改A的值;
2:谁需要委托:
换句话说就是谁要做什么而不能做.
我们的需求是需要B返回A的时候把输入的值传递给A, 那么就是B需要委托,要传递数值给A,在A的label里显示这个数值,而它没办法去完成的;
3:谁通过代理去做:
B需要通过代理去修改A里Label的值.
4:谁委托谁去做
B委托A去修改值;
理清这几个关系后,我们的代码就可以按照这个套路去编写了:
一:代理要做什么
B.h
声明一个协议,这个代理要做的是修改Label的值;
@protocol BDelegate
<NSObject> - (void)changeLabelText: (NSString *)text; @end
二: 谁需要代理:
B需要一个代理
B.h
@property (nonatomic, assign) id<BDelegate> delegate;
三:谁通过代理去做
B.m
[self.delegate changeLabelText: textField.text];
四:做什么
A.h里加入协议
@interface A : UIViewController <BDelegate>
A.m里定义代理
B *B = [[B alloc]init];
B.delegate = self;//B的委托A去做(self即A)
A.m实现这个协议方法
- (void)changeLabelText:(NSString *)text{
self.label.text = text;//修改label的text值 text即在B里修改的值
}
That's all.
源码下载:http://vdisk.weibo.com/s/yV3nUa6epUv7x
请复制后黏贴到地址栏打开.
ios 页面传值4种方式(四) 之通过delegate(代理)的更多相关文章
- ios 页面传值4种方式(一) 之全局变量
通用的是用代理的方式实现页面传值,但是有时候利用其它方式也可以很巧妙的解决问题,页面传值一共有4种方式: 1.使用全局变量, SharedApplication,定义一个变量来传递. 2.使用文件,或 ...
- 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】
阅读目录 1. URL 链接后追加参数 2. Form 3. 设置 Cookie 4. 设置 Session JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧. 试着将各种方式总 ...
- WebForm aspx页面传值---7种方式
1.get方式 发送页 <form id="form1" runat="server"> <div> <a h ...
- iOS页面传值方式
普遍传值方式如下: 1.委托delegate方式: 2.通知notification方式: 3.block方式: 4.UserDefault或者文件方式: 5.单例模式方式: 6.通过设置属性,实现页 ...
- 网络笔记01-3 socket 实现百度页面的两种方式
scoket 实现百度页面的两种方式: 1.利用系统自带 //1.创建URL NSURL *url=[NSURL URLWithString:@"http://m.baidu.com& ...
- WebView加载页面的两种方式——网络页面和本地页面
WebView加载页面的两种方式 一.加载网络页面 加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面 代码如下图: 二.加载本地页面 1.加载asse ...
- iOS页面切换动画实现方式。
iOS页面切换动画实现方式. 1.使用UIView animateWithDuration:animations:completion方法 Java代码 [UIView animateWithDura ...
- Android提交数据到服务器的两种方式四种方法
本帖最后由 yanghe123 于 2012-6-7 09:58 编辑 Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方 ...
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视 ...
随机推荐
- 基于Mongodb的轻量级领域驱动框架(序)
混园子也有些年头了,从各个大牛那儿学了很多东西.技术这东西和中国的料理一样,其中技巧和经验,代代相传(这不是舌尖上的中国广告).转身回头一望,几年来自己也积累了一些东西,五花八门涉猎到各种方向,今日开 ...
- 扩展 delphi 线程 使之传递参数.(给匿名线程增加参数)
新delphi的线程TThread有了CreateAnonymousThread方法,如果再为它加一个可传递的参数不就更好了吗?代码如下: TAnonymousThreadX<T> = c ...
- Data Flow ->> Raw File Source & Raw File Destination
Raw File Source & Raw File Destination一般用在当有某个package在导入数据或者处理数据需要花费非常长的时间的情况下,可以通过把一些处理好的数据先存到r ...
- 转:Maven介绍(创建工程项目以及下载所需要的jar包)
http://blog.csdn.net/guanghua2009/article/details/6644111 目前我还不太会用maven,慢慢学吧 目前就是用来下载自己要的jar包,先根据这篇转 ...
- c# 计算1-100之间的所有奇数的和
求1-100之间所有奇数整数和: class Program { static void Main(string[] args) { ,); Console.WriteLine("1-100 ...
- iPhone 已停用
如果你的iPhone上出现了如下的显示,你可以参考苹果官网上的 iOS设备已停用 如果你看到了这篇文章,你比我幸运多了. 参考这一个条目,你也许就不会丢失里面的数据了. 可怜的我,出现这个问题时还没 ...
- allegro蛇形线
蛇形线设置: 设置之后,框选你要修改的线即可: 修线: --------------------------------
- Create Entity Data Model
http://www.entityframeworktutorial.net/EntityFramework5/create-dbcontext-in-entity-framework5.aspx 官 ...
- AIX 内存使用情况
cat > WHAT_EVER_YOU_WANT.sh#!/usr/bin/ksh#memory calculatorum=`svmon -G | head -2|tail -1| awk {' ...
- SASS -- 基本认识
SASS 是一种 CSS 的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得 CSS 的开发,变得简单和可维护. SASS 提供四个编译风格的选项: * nested:嵌套缩进的 css ...