美文网首页
学习笔记-两界面之间传值(代理)

学习笔记-两界面之间传值(代理)

作者: 听雨花春风 | 来源:发表于2016-04-26 15:16 被阅读48次
在两个界面之间传值(代理)

1.正向传值

  • 记得在被传入值的文件中声明一个公开的属性用于接收传过来的值
  • 在适当的时机把要传过去的值赋给这个公开的属性,一般在推出这个界面的方法中
  • 把公开属性的值赋予需要用的地方

2.反向传值

  • 委托方:
    • a.定义一个公开的协议
    • b.声明一个公开的delegate属性
    • c.在适当的时机给代理发送消息

委托方.h文件

#import <UIKit/UIKit.h>

@protocol relect <NSObject>

-(void)lastToFirst:(NSString *)text;

@end

@interface OtherController : UIViewController

@property(nonatomic,strong)UITextField *tf;

@property(nonatomic,assign)id<relect>delegate;


@end

委托方.m文件

#import "OtherController.h"

@interface OtherController ()

@end

@implementation OtherController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor greenColor];
    
    _tf = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
    
    _tf.backgroundColor =[UIColor whiteColor];
    
    UIButton *button =[[UIButton alloc] initWithFrame:CGRectMake(150, 150, 100, 50)];
    
    [button setTitle:@"即将隐藏" forState:UIControlStateNormal];
    
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    
    [button addTarget:self action:@selector(clikButton:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:button];
    
    [self.view addSubview:_tf];
    
}

-(void)clikButton:(UIButton *)button{
    
    NSString *sss = _tf.text;
    
    [self.delegate lastToFirst:sss];
    
    [self dismissViewControllerAnimated:YES completion:nil];
    
}
@end
  • 代理方:
    • a. 遵守协议
    • b. 把自己设置为代理方
    • c. 实现代理方法

代理方.h文件

#import <UIKit/UIKit.h>

@interface CodeController : UIViewController

@property(nonatomic,strong)UITextField *tff;

@end

代理方.m文件

#import "CodeController.h"
#import "OtherController.h"
@interface CodeController ()<relect>

@end

@implementation CodeController

- (void)viewDidLoad {
    
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor cyanColor];
    
    _tff = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
    
    _tff.backgroundColor =[UIColor whiteColor];
    
    UIButton *button =[[UIButton alloc] initWithFrame:CGRectMake(150, 150, 100, 50)];
    
    [button setTitle:@"即将弹出" forState:UIControlStateNormal];
    
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    
    [button addTarget:self action:@selector(clikButton:) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:button];
    
    [self.view addSubview:_tff];
    
}

-(void)clikButton:(UIButton *)button{
    
    OtherController *othercontroller = [[OtherController alloc] init];
    
    othercontroller.delegate = self;
    
    othercontroller.view.backgroundColor = [UIColor grayColor];
    
    othercontroller.tf.text = _tff.text;
    
    [self presentViewController:othercontroller animated:YES completion:^{
        NSLog(@"弹出完毕");
    }];

}

- (void)lastToFirst:(NSString *)text{
    
    _tff.text = text ;
    
}


@end

相关文章

  • 学习笔记-两界面之间传值(代理)

    在两个界面之间传值(代理) 1.正向传值 记得在被传入值的文件中声明一个公开的属性用于接收传过来的值 在适当的时机...

  • iOS中界面传值的几种方式

    1.属性传值 属性传值适用于顺序传值,从前面的界面传值给后面的界面。 2.代理传值 用代理的方式实现界面间传值稍微...

  • swift中的协议代理传值

    协议代理传值一般使用在下级界面往上级界面传值的情况,这里将上级界面设定为A界面,下级界面设定为B界面。传值的具体操...

  • Swift界面传值

    Swift中界面传值的方法 主要有三种 1.代理传值2.闭包传值(即OC中的Block) 属性传值 代理传值 F...

  • swift传值

    本文将介绍swift中的传值方式:属性传值、代理传值、闭包传值、通知传值本文将在两个VC之间进行传值:HomeVC...

  • 芒果iOS开发之界面传值方式-数组回传值

    在iOS开发过程中经常会用到界面之间的传值,提到传值大家立马就能说出来很多种方式:比如,最简单的属性传值;还有代理...

  • swift 代理传值

    swift中的代理传值跟oc中的用法基本一样,都是用于反向传值,这里假设a界面向b界面传值为正向传值,则: 在b界...

  • iOS界面传值的几种常用方式总结

    1.属性传值 第二个界面 同时 .m使用 在第一个界面 写传值 2.代理传值 RootViewController...

  • ios-代理的基本使用

    代理的基本用法 界面由A->B 再由B->A 的时候,需要B的值传值给A以下是用代理的方法实现, 代理和传值是先...

  • 界面传值

    1正向传值 2反向传值(代理) 在b界面 :1声明协议和方法(方法不实现)2定义代理属性 通知代理 a面遵守协议。...

网友评论

      本文标题:学习笔记-两界面之间传值(代理)

      本文链接:https://www.haomeiwen.com/subject/htgqrttx.html