这是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(代理)的更多相关文章

  1. ios 页面传值4种方式(一) 之全局变量

    通用的是用代理的方式实现页面传值,但是有时候利用其它方式也可以很巧妙的解决问题,页面传值一共有4种方式: 1.使用全局变量, SharedApplication,定义一个变量来传递. 2.使用文件,或 ...

  2. 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】

    阅读目录 1. URL 链接后追加参数 2. Form 3. 设置 Cookie 4. 设置 Session JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧. 试着将各种方式总 ...

  3. WebForm aspx页面传值---7种方式

    1.get方式 发送页 <form id="form1" runat="server">    <div>        <a h ...

  4. iOS页面传值方式

    普遍传值方式如下: 1.委托delegate方式: 2.通知notification方式: 3.block方式: 4.UserDefault或者文件方式: 5.单例模式方式: 6.通过设置属性,实现页 ...

  5. 网络笔记01-3 socket 实现百度页面的两种方式

    scoket 实现百度页面的两种方式: 1.利用系统自带    //1.创建URL NSURL *url=[NSURL URLWithString:@"http://m.baidu.com& ...

  6. WebView加载页面的两种方式——网络页面和本地页面

    WebView加载页面的两种方式 一.加载网络页面 加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面 代码如下图: 二.加载本地页面 1.加载asse ...

  7. iOS页面切换动画实现方式。

    iOS页面切换动画实现方式. 1.使用UIView animateWithDuration:animations:completion方法 Java代码 [UIView animateWithDura ...

  8. Android提交数据到服务器的两种方式四种方法

    本帖最后由 yanghe123 于 2012-6-7 09:58 编辑 Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方 ...

  9. iOS 页面间几种传值方式(属性,代理,block,单例,通知)

    第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视 ...

随机推荐

  1. highCharts图表入门实例

    本文通过讲解Highcharts生成一个简单的3D柱状图实例来学习Highcharts的使用. JSP 页面 1.需要引入的js文件 <script src="<%=basePa ...

  2. PHP 练习租房

    练习:租房子 <body> <form action="test.php" method="post"> <div>区域: ...

  3. C# 中通过API实现的打印类

    using System;using System.Collections;using System.Text;using System.Runtime.InteropServices; using ...

  4. 第六篇 ORACLE EBS用户界面通用元素或功能背后的道理解析

    本篇打算介绍一下ORACLE EBS用户界面(User Interface)中通用的元素或功能背后蕴含的一些道理.这些通用元素或功能包括: List of Values (LOV),值列表 Flexf ...

  5. Hook入门

    Hook入门 2014-07-24 基本概念 Windows消息机制 Hook(钩子) 运行机制 核心函数 C# hook示例 基本概念[1] Windows消息机制[5] Windows操作系统是建 ...

  6. leetcode:Lowest Common Ancestor of a Binary Search Tree

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  7. hibernate的三种状态(儿)

    第五讲:hibernate的三种状态 瞬时:bean对象与session,与数据库无关.在session对象的save方法保存之前. 持久状态(托管):bean对象与session有关,数据库中有对应 ...

  8. linux 多处理器概念

    Linux 提出了 Multi-Processing 的概念,它的调度器可以将操作系统的线程均分到各个核(或硬件线程)上去执行,以此达到并行计算的目的,从而也可以极大地提高系统的性能. 实现计数器 1 ...

  9. laravel, Composer和autoloading

    http://www.php-fig.org/psr/psr-4/ http://www.php-fig.org/psr/psr-0/ http://alanstorm.com/laravel_com ...

  10. 修改Eclipse格式化代默认长度

    eclipse 默认设置的换行长度为80, 格式化代码后,同一个方法里面参数也经常被,换行,非常难看 1.Java代码打开Eclipse的Window菜单,然后 Preferences->Jav ...