iOS—block传值

以登录注册页面举例

代码这里省略掉登录、注册页面中的view.h view.m
登录页面中有: loginButton,registerButton,nameTextfield,passTextField;
注册页面中有:confirmButton,nameTextfield,passTextField

//注册 RegisterView.h中

#import <UIKit/UIKit.h>
#import "RegisterView.h"

NS_ASSUME_NONNULL_BEGIN

@interface RegisterController : UIViewController

@property RegisterView *registerView;

@property NSString *str;
@property UIButton *btn;

//第1步 声明block
//block 变量的声明格式:返回值类型(^block名字)(参数列表);
//@property void (^block1) (NSString *name, NSString *pass);

//省略写法
@property void (^block1) (NSString *, NSString *);

@end
//注册 RegisterView.m中

#import "RegisterController.h"

@interface RegisterController ()

@end

@implementation RegisterController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    _registerView = [[RegisterView alloc] initWithFrame:self.view.frame];
    [self.view addSubview:_registerView];
    [_registerView initView];
    [_registerView.confirmButton addTarget:self action:@selector(pressBack) forControlEvents:UIControlEventTouchUpInside];
  
}

- (void)pressBack {
    
    //第2步 得到要传的属性
    _block1(_registerView.nameTextfield.text, _registerView.passTextField.text);
   
    [self dismissViewControllerAnimated:YES completion:nil];
}

@end

//登录 LoginViewController.h中

#import <UIKit/UIKit.h>
#import "View.h"

NS_ASSUME_NONNULL_BEGIN

@interface LoginViewController: UIViewController

@property View *loginView;

@end

// 登录 LoginViewController.m中

#import "LoginController.h"
#import "RegisterController.h"
#import "View.h"

@interface Controller ()

@end

@implementation Controller

- (void)viewDidLoad {
    [super viewDidLoad];
    
    _loginView = [[View alloc] initWithFrame:self.view.frame];
    [self.view addSubview:_loginView];
    [_loginView initView];
    [_loginView.registerButton addTarget:self action:@selector(pressRegister) forControlEvents:UIControlEventTouchUpInside];
    
}

- (void)pressRegister {
    RegisterController * registerController = [[RegisterController alloc] init];
    //第三步  回调, 将registerController页面的值传回来
    registerController.block1 = ^(NSString * name, NSString * pass) {
        self.loginView.nameTextfield.text = name;
        self.loginView.passTextField.text = pass;
    };
    [self presentViewController:registerController animated:YES completion:nil];
}

@end

效果图如下:
登录界面开始的样子
land1

点击注册,并输入信息
register

点击确定返回登录页面, 登录页面如图
land2

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值