正向传值:
正向传值也叫顺向传值,也就是按着界面跳转的顺序来传值,比如从A类跳转到B类且A类的值传到B类去。
步骤:
1.首先创建A.B类,在A类创建一个跳转的方法,在pushViewController或者presentViewController时,直接带参数下去。
A类里面.m文件创建一个按钮,并且实现按钮的触发方法;
UIButton *btn=[UIButtonbuttonWithType:UIButtonTypeCustom];
btn.frame=CGRectMake(100,220, 120,30);
[btn setBackgroundColor:[UIColorgrayColor]];
[btn addTarget:selfaction:@selector(btnclick)forControlEvents:UIControlEventTouchUpInside];
[btn setTitle:[NSStringstringWithFormat:@"跳转"]forState:UIControlStateNormal];
[self.viewaddSubview:btn];
//实现触发的方法
-(void)btnclick
{
//主动方往往创建在被动方里面
_svc = [[sendViewControlleralloc] init];
//设置代理
_svc.delegate =self;
_svc.STR=@"11234";//正向传值参数属带的值,用于传向下一个界面
[selfpresentViewController:_svcanimated:YEScompletion:^{
}];
}
NSString *str=[NSStringstringWithFormat:@"%@",self.STR];//结果是由.A界面传值下来的值。-----11234
NSLog(@"正向传值=====%@",self.STR);
2016-05-23 17:21:32.339 反向传值[1907:454959]正向传值=====11234
1.代理传值:
代理传值是实现两个页面的传值,首先需要有两个试图控制器,A.B两个控制器;
准备工作:
在B控制器里面添加代理属性跟方法:
#import <UIKit/UIKit.h>
@protocol ChangeStatus <NSObject>
//代理传值方法
- (void)changeStatus:(NSString *)isOn;
@end
@interface sendViewController : UIViewController
//反向传值的属性
@property (nonatomic,assign) id <ChangeStatus> delegate;
//正向传值的属性
@property(nonatomic,retain)NSString *STR;
@end
1.在A控制器中添加代理
#import <UIKit/UIKit.h>
#import "sendViewController.h"
@interface ViewController : UIViewController<ChangeStatus>//必须添加代理的协议
@end
//跳转时必须实现代理
-(void)btnclick
{
//主动方往往创建在被动方里面
_svc = [[sendViewControlleralloc] init];
//设置代理
_svc.delegate =self;//反向传值必须要写的一句话
_svc.STR=@"11234";//正向传值参数属带的值,用于传向下一个界面
[selfpresentViewController:_svcanimated:YEScompletion:^{
}];
}
//代理要实现的方法
- (void)changeStatus:(NSString *)isOn{
NSLog(@"%@",isOn);
NSLog(@"反向传值传值====%@",isOn);
self.label.text=isOn;
}
- (void)changeStatus{
//检测代理有没有实现changeStatus:方法
if([self.delegaterespondsToSelector:@selector(changeStatus:)]){
[self.delegatechangeStatus:@"123"];//代理传值-------传值到上个界面的值
}else{
NSLog(@"代理没有实现changeStatus:方法");
}
}
2016-05-23 17:21:32.339 反向传值[1907:454959]正向传值=====11234
2016-05-23 17:22:03.611 反向传值[1907:454959]反向传值传值====123