ios反向传值(1.代理传值)

正向传值:

    正向传值也叫顺向传值,也就是按着界面跳转的顺序来传值,比如从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:^{

        

    }];

}




在B类中的.m文件中直接调用即可

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,assignid <ChangeStatus> delegate;


//正向传值的属性

@property(nonatomic,retain)NSString *STR;


@end


1.在A控制器中添加代理

#import <UIKit/UIKit.h>

#import "sendViewController.h"


@interface ViewController : UIViewController<ChangeStatus>//必须添加代理的协议


@end


在A控制里面跳转时委托代理为本控制器

//跳转时必须实现代理

-(void)btnclick

{

    //主动方往往创建在被动方里面

    _svc = [[sendViewControlleralloc] init];

    //设置代理

    _svc.delegate =self;//反向传值必须要写的一句话

    

    _svc.STR=@"11234";//正向传值参数属带的值,用于传向下一个界面

    

    [selfpresentViewController:_svcanimated:YEScompletion:^{

        

    }];

}




3.在A控制器上实现B控制器定义的方法

//代理要实现的方法

- (void)changeStatus:(NSString *)isOn{

    NSLog(@"%@",isOn);

    NSLog(@"反向传值传值====%@",isOn);


    self.label.text=isOn;

}




4.在返回上个界面之前需要

- (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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值