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来传递

时间: 2024-10-08 06:20:55

IOS 委托代理(delegate)实现页面传值的相关文章

页面传值--Delegate/Block/KVO/Notification

上一篇讲了Block的页面传值.这里也就顺便把常用的几种页面传值放上来.这里我写了一个Demo:https://github.com/ChenNan-FRAM/TransferDataDemo .想下的可以上去下载来看看. 这里主要把上一篇提到的四种方式说一下(话不多说直接核心代码讲). 1.使用Delegate 2.使用Notification 3.使用Block 4.使用KVO 定义及使用 第二个界面.h 头文件 //定义一个委托协议 @protocol NextVCDelegate <NS

ios学习-delegate、传值、跳转页面

ios学习-delegate.传值.跳转页面 1.打开xcode,然后选择ios--Application--Empty Application一个空项目. 项目目录: 2.输入项目名称以及选择保存路径即可. 3.创建文件夹Model.Controller. 4.Model文件夹创建User类:User.h User.m 代码: User.h: [html] view plaincopy #import <Foundation/Foundation.h> @interface User : N

ios 页面传值

今天看了一下ios 页面传值的方式大致分为四种: 代理delegate block 通知 单例class 今天试了一下前三种,在这里记录一下 下面示例是有两个页面,每个页面都有一个按钮Button,点击第一个页面的按钮回调到第二个页面,再点击第二个页面回跳转道第一个页面,第一个按钮的标题变为第二个按钮传回的值. 代理delegate 代理似乎是我的心结,能用API 但是就是不会自己写,这也是今天会写传值的原因. 假设两个页面传值,协议类应该写在哪,代理应该定义在那个页面? 总结的时候我觉得可以这

iOS 页面传值的几种方式之NSNotificationCenter传值

接着上回说的iOS页面传值问题 传送门---------->iOS页面传值之代理传值 接下来我们说说NSNotificationCenter传值方式 在开始之前,我们首先得知道KVO模式 Key-Value Observing (KVO) 键值监听 就是说当你告诉通知中心一个Key 他会根据Value的变化做些事情,或者是获取一些数据 说上千回,不如用上一回. 我们在B控制器发送一个监听 [[NSNotificationCenter defaultCenter] postNotification

iOS中多视图的传值 属性传值和代理传值

首先创建两个类 ,FirstViewController和SecondViewController,都继承于UIViewController 1 #import "AppDelegate.h" 2 #import "FirstViewController.h" 3 4 @interface AppDelegate () 5 6 @end 7 8 @implementation AppDelegate 9 10 11 - (BOOL)application:(UIAp

swift详解之二十二-----------UINavigationController的基本用法和页面传值几种方式

UINavigationController的基本用法和页面传值几种方式 本文介绍UINavigationController基本用法,因为涉及多页面顺便介绍页面传值 1.手写代码创建UINavigationController 手写方式创建很简单 , 首先创建一个项目 , 默认是从storyboard 加载的.这时候首先去掉默认加载方式 . 然后在AppDelegate.swift 的didFinishLaunchingWithOptions 中创建 代码如下: func applicatio

Form页面传值问题

主要用到的传值方式 1.设置全局变量 2.窗体构造函数 3.Delegate委托 第1种是只需要将所需要传值的字段或类改为Static即可 第2个方法是Form1往Form2中传值 Form1中代码 private void button_Click(object sender, System.EventArgs e) { Form2 f= new Form2( ”Curry“ ); f.Show(); } Form2中代码 public Form2( string str ) { Initia

一篇文章学会页面传值的10种方法(下)

一篇文章学会页面传值的10种方法(下) 6.代理委托实现页面之间的反向传值 这一种方法就是运用协议实现传值,这种方式也是在工程中常用的一种传值方法.首先创建好ViewController和SubViewController,在ViewController中创建好一个展示信息的Label,在SubViewController中创建好一个TextFeild,我们实现在第二个界面点击屏幕时,将TextFeild中的文字传到第一个界面,然后让背景颜色变色. 效果如下: 代理传值.gif 第一步: 首先我

Block的使用--页面传值方法及探究

上一篇讲了Block的简单实用,这一篇则是讲述Block的最经常也是比较简单的用法,个人认为这是block相对其他页面传值方式比较好的一个用处.也顺便总结下这两天对Block的理解的一些注意点. 对于页面传值这种情况,我们一般在程序里有几种处理的方法. 1.设置Delegate 2.使用NotificationCenter 3.使用Block 4.KVO页面传值 5.NSUserDefault等文件存储机制做中间介质传递(但比较浪费,用在页面传值上几率很低) 这一篇博客我只讲一下Block的一般