使用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我啊 -_-!(不开森)