代理传值

来源:互联网 发布:centos 光盘 yum源 编辑:程序博客网 时间:2024/05/18 04:02


第一步: 声明一份协议, 写明协议内容 
第二步: 设置代理人属性. 
第三步: 设置代理人需要完成协议内容里的方法 
第四步: 引头文件, 代理人签订协议 
第五步: 设置代理人 
第六步: 代理人完成协议中的内容

第一步第二步: 
在第二个页面的.h 中声明协议

#import <UIKit/UIKit.h> 

// 协议传值的第一步: 声明一份协议,写方法

 @protocol SecondViewControllerDelegate <NSObject>

 // 协议方法:

 - (void)changeValue:(NSString *)value;

 @end

 @interface SecondViewController : UIViewController

 // 协议第二步:设置代理人属性

 @property(nonatomicassign)id<SecondViewControllerDelegate>delegate;

 @end

第三步: 
在第二个页面的.m中 
当然我们是在点击第二页的button时,使用模态或者视图控制器才转到第一个页面. 
所以第三步写在button的点击事件中.

// 点击返回,是协议的触发条件

 - (void)buttonAction:(UIButton *)button

{

 [self.navigationController popViewControllerAnimated:YES];

 // 协议第三步: 设置代理人需要完成的协议方法.

 [self.delegate changeValue:self.textField.text];

 }

第四步: 
当我们使用系统中的协议时, 就只需要从第四步开始写. 
在第一页的.m的延展部分签订

#import "MainViewController.h"

 #import "SecondViewController.h" 

//协议传值第四步: 签订协议.

 @interface MainViewController ()<SecondViewControllerDelegate>

 @end

第五步:

- (void)buttonAction:(UIButton *)button

//push到下一页 SecondViewController *secondVC = [[SecondViewController alloc] init]; 

// 协议传值第五步: 设置代理人 secondVC.delegate = self

[self.navigationController pushViewController:secondVC animated:YES];

 }

第六步:

// 协议传值第六步: 实现协议方法. - (void)changeValue:(NSString *)value

self.label.text = value; NSLog(@"%@",value);

 }


0 0
原创粉丝点击