IOS 委托代理(delegate)实现页面传值
LvesLi原创,转载请注明原文链接谢谢 http://www.androiddev.net/lvesli_delegate/
委托是指给一个对象提供机会对另一对象中的变化做出反应或者相应另一个对象的行为。其基本思想是协同解决问题。
在程序中:一般情况下
1.委托需要做的工作有:
1.1定义协议与方法
1.2声明委托变量
1.3设置代理
1.4通过委托变量调用委托方法
2.代理需要做的工作有:
2.1遵循协议
2.2实现委托方法
下面讲解一下使用委托实现页面传值的解决方法:
加入我们有两个ViewController 分别为:ViewController和 TrendViewController
一 .需求:
我们要实现这样一个功能,当点击ViewController视图上的一个按钮的时候立刻跳转到TrendViewController,并且把一个String字符串传递过去。
二.解决方案:
1.在ViewController.h文件的最上边声明协议如下:
1 |
@protocol PassTrendValueDelegate |
2 |
-(void)passTrendValues:(NSString *)values;//1.1定义协议与方法 |
3 |
@end |
2.继续在ViewController.h中声明一个委托变量
1 |
///1.定义向趋势页面传值的委托变量 |
2 |
@property (retain,nonatomic) id <PassTrendValueDelegate> trendDelegate; |
3.进入ViewController.m文件在点击按钮事件函数中,设置代理
1 |
#pragma mark 点击趋势按钮 |
2 |
-(void)trendBtnClick{ |
3 |
//create the view |
4 |
TrendViewController *trendViewController = [[TrendViewController alloc] initWithNibName:@"TrendViewController" bundle:nil]; |
5 |
6 |
self.trendDelegate=trendViewController; //设置代理 |
7 |
[self.trendDelegate passTrendValues:@"Lves李兴乐"]; |
8 |
//页面跳转 省 |
9 |
} |
4.进入TrendViewController.h ,引用ViewController的头文件,并添加代理协议如下:
1 |
#import "ViewController.h" |
2 |
3 |
@interface TrendViewController : UIViewController<PassTrendValueDelegate>{ |
4 |
5 |
} |
6 |
@end |
5.实现代理函数:
1 |
#pragma mark 实现传值协议方法 |
2 |
-(void)passTrendValues:(NSString *)values{ |
3 |
NSLog(@"values:::%@",values); |
4 |
5 |
} |
运行一下 OK.
实现页面传值的方法还有:
1.通知
2.方法
3.代理方法
4.SharedApplication
5.NSUserdefault
6.通过一个单例的class来传递
IOS 委托代理(delegate)实现页面传值的更多相关文章
- IOS学习之路十七(通过delegate进行页面传值)
加入有A B两个页面,要实现从A跳到B的时候把值传过去,现在用delegate协议来实现 在A中定义一个协议,定义一个实现该协议的属性变量 在B中定义一个值(要获得的值类型)和set方法. 要传值B ...
- ios学习-delegate、传值、跳转页面
ios学习-delegate.传值.跳转页面 1.打开xcode,然后选择ios--Application--Empty Application一个空项目. 项目目录: 2.输入项目名称以及选 ...
- iOS页面传值方式
普遍传值方式如下: 1.委托delegate方式: 2.通知notification方式: 3.block方式: 4.UserDefault或者文件方式: 5.单例模式方式: 6.通过设置属性,实现页 ...
- ios 页面传值4种方式(一) 之全局变量
通用的是用代理的方式实现页面传值,但是有时候利用其它方式也可以很巧妙的解决问题,页面传值一共有4种方式: 1.使用全局变量, SharedApplication,定义一个变量来传递. 2.使用文件,或 ...
- ios初体验< 运用属性传值,登录>
注意:ViewController.m文件 // 在第一个页面中,创建一个简单的登录页面,并且添加两个属性 1 #import "ViewController.h" #import ...
- UIPassValue页面传值 UI_08(下)
2.从前一个界面到后一个界面 注意:解题思路 葵花宝典:属性传值 第一步:在下一个界面视图控制器的.h文件中定义一个属性 第二步:在push之前将数据存储到属性中 第三步:取出属性中的值让控件 ...
- ASP.NET MVC 5 Web编程5 -- 页面传值的方式
本篇文章将讲述MVC的页面传值方式,具体包括:后端向前端传值(Controller向View传值):前端向后端传值(View向Controller传值):Action与Action之间的传值. 回顾 ...
- WebForm 页面传值
一.使用Querystring Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象.如果你想传递一个安全性不是那么太重要或者是 ...
- Spring 向页面传值以及接受页面传过来的参数的方式
来源于:http://www.cnblogs.com/liuhongfeng/p/4802013.html 一.从页面接收参数 Spring MVC接收请求提交的参数值的几种方法: 使用HttpSer ...
随机推荐
- Spring Aop面向切面编程&&自动注入
1.面向切面编程 在程序原有纵向执行流程中,针对某一个或某一些方法添加通知,形成横切面的过程叫做面向切面编程 2.常用概念 原有功能:切点,pointcut 前置通知:在切点之前执行的功能,befor ...
- idea配置MyBatis
新建工程 删掉src 创建Module 在工程中的porn.xml输入以下依赖 <?xml version="1.0" encoding="UTF-8"? ...
- [源码解析] PyTorch 分布式(11) ----- DistributedDataParallel 之 构建Reducer
[源码解析] PyTorch 分布式(11) ----- DistributedDataParallel 之 构建Reducer 目录 [源码解析] PyTorch 分布式(11) ----- Dis ...
- 『学了就忘』Linux文件系统管理 — 57、Linux文件系统介绍
目录 1.了解硬盘结构(了解即可) (1)硬盘的逻辑结构 (2)硬盘接口 2.Linux文件系统介绍 (1)Linux文件系统的特性 (2)Linux常见文件系统 3.整理一下对文件系统的认识 在了解 ...
- Codeforces 1236F - Alice and the Cactus(期望+分类讨论)
Codeforces 题面传送门 & 洛谷题面传送门 期望好题. 首先拆方差: \[\begin{aligned} &E((x-E(x))^2)\\ =&E(x^2)-2E(x ...
- CF Edu Round 71
CF Edu Round 71 A There Are Two Types Of Burgers 贪心随便模拟一下 #include<iostream> #include<algor ...
- Codeforces 516D - Drazil and Morning Exercise(树的直径+并查集)
Codeforces 题目传送门 & 洛谷题目传送门 这是一道 jxd 的作业题,感觉难度不是特别大(虽然我并没有自己独立 AC,不过也可能是省选结束了我的脑子也没了罢(((,就随便写写罢 u ...
- SNPEFF snp注释 (添加自己基因组)
之间介绍过annovar进行对snp注释,今天介绍snpEFF SnpEff is a variant annotation and effect prediction tool. It annota ...
- mysql—MySQL数据库中10位时间戳转换为标准时间后,如何对标准时间进行加减X天处理
在这篇的缘由:问题:"FROM_UNIXTIME(timeline,'%Y-%m')"的结果(2020-06)做月份增加1月或者减少1月的计算处理,想着直接在结果上+1但是,结果为 ...
- 苹果ios通过描述文件获取udid
苹果ios通过描述文件获取udid 需要准备的东西 1,安装描述文件只支持https的回调地址,所以需要申请https域名 2,描述文件签名,不安装也可,只要能接受红色的字 步骤: 1,准备xml文件 ...