ios开发传值方式二:delegate(委托.代理)传值.

使用delegate传值主要是通过4步进行传值的 (1.定义协议与方法,2.声明委托变量,3.设置代理,4.通过委托变量调用委托方法,)

本案例是在firstViewController界面上的textFIeld里面输入文字,点击跳转之后,在secondViewController界面上的label里面显示出来再第一个界面输入的文字.

一.定义协议与方法

首先在 firstViewController.h 里面定义协议与方法

1 @protocol ChuanZhiDelegate <NSObject>
2 
3 -(void)passWord:(NSString *)values;
4 
5 @end

二.声明委托变量

继续在firstViewController.h里面 声明委托变量

1 @property(retain , nonatomic) id<ChuanZhiDelegate> chuanZhiDelegate;

三.设置代理

当我们点击提交按钮的时候设置代理 

1  self.chuanZhiDelegate = secondVC;//设置代理
2 
3     [secondVC passWord:str];
4 [self.navigationController pushViewController:secondVC animated:YES];//界面跳转

四.通过委托变量调用委托方法

(在seondViewController里面实现的)

首先在 secondViewController.h里面 导入firstViewController头文件

#import "firstViewController.h"

然后添加

<ChuanZhiDelegate>

现在看一下我的secondViewController.h 

1 #import <UIKit/UIKit.h>
2 #import "firstViewController.h"
3 @interface secondViewController : UIViewController<ChuanZhiDelegate>
4 @property (weak, nonatomic) IBOutlet UILabel *lab;
5 
6 @end

然后我们就可以在.m文件里面调用协议方法

 1 #import "secondViewController.h"
 2 
 3 @interface secondViewController ()
 4 {
 5     NSString * str;
 6 }
 7 
 8 @end
 9 
10 @implementation secondViewController
11 - (void)viewDidLoad {
12     [super viewDidLoad];
13     _lab.text = str;
14 }
15 -(void)passWord:(NSString *)values{
16     str = values;
17 }

就这样就实现了,很简单,不懂得mmm我啊  -_-!(不开森)

原文地址:https://www.cnblogs.com/JustForHappy/p/5460813.html