美文网首页
block在页面间的传值

block在页面间的传值

作者: 神SKY | 来源:发表于2016-12-21 17:27 被阅读19次

block在控制器页面之间的传值是一个我们经常遇到的问题,在这里做了一个简单的代码讲解,效果图如下:


block传值

第一步,需要有两个视图控制器,在页面一中需要有一个按钮,使页面一可以跳转到页面二,需要一个label来显示页面二传过来的值。在第二个页面需要设置一个按钮来返回页面一,一个文本输入框来输入需要传到页面一的值,布局如下:


页面一
页面二
第二步,在页面一的视图控制器中导入页面二的视图控制器,并建立点击页面一的按钮,使页面一跳转到页面二的操作,代码如下:
- (IBAction)present:(UIButton *)sender {
    TwoViewController *vc = [TwoViewController new];
    [self presentViewController:vc animated:YES completion:nil];
}

第三步,在页面二的.h文件中建立block的属性和用来传值的方法,代码如下:

#import <UIKit/UIKit.h>
typedef void (^MessageBlock)(NSString *str);
@interface TwoViewController : UIViewController
@property (copy, nonatomic)MessageBlock messageblock;
- (void)returnMessage:(MessageBlock)block;
@end

第四步,在页面二的.m文件中block赋值,将文本输入框输入的值通过block传出(注:用block赋值时最好先判断一下block是否存在),代码如下:

#import "TwoViewController.h"

@interface TwoViewController ()
@property (weak, nonatomic) IBOutlet UITextField *input;

@end

@implementation TwoViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}
- (void)returnMessage:(MessageBlock)block
{
    if (block) {
        self.messageblock = block;
    }
}
- (IBAction)dismiss:(UIButton *)sender {
    if (self.messageblock) {
        self.messageblock(self.input.text);
    }
    [self dismissViewControllerAnimated:YES completion:nil];
}
@end

最后一步,在页面一的.m文件中将页面二传过来的值展示出来,代码如下:

- (IBAction)present:(UIButton *)sender {
    TwoViewController *vc = [TwoViewController new];
    [vc returnMessage:^(NSString *str) {
        self.value.text = str;
    }];//在原来的代码中加上这句方法调用即可
    [self presentViewController:vc animated:YES completion:nil];
}

Demo的下载地址:https://github.com/shenSKY/block.git
最后,希望这篇文章对各位看官们有所帮助。

相关文章

  • block在页面间的传值

    block在控制器页面之间的传值是一个我们经常遇到的问题,在这里做了一个简单的代码讲解,效果图如下: 第一步,需要...

  • IOS 界面之间传值总结

    iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单...

  • Block页面间传值

    不废话,上代码 》》》 1、先说下实现的过程:A到B,B带值到A,A打印或者显示。 2、实现的思路:A调用B声明的...

  • iOS 传值

    页面传值 NSNotification Delegate Block 单例 一、 页面传值 最简单直接的传值方法 ...

  • iOS页面间逆传值

    页面间传值有两种: 正向传值(利用属性传值就可以了,很简单) 逆向传值(有3种常用的方法) 代理传值 block传...

  • ioS 页面(代理、通知、block、单例、属性)传值

    iOS 页面(代理、通知、block、单例、属性)传值 一、传值分类 页面传值基本分为两种:正向传值和反向传值。 ...

  • iOS 页面(代理、通知、block、单例、属性)传值

    iOS 页面(代理、通知、block、单例、属性)传值 一、传值分类 页面传值基本分为两种:正向传值和反向传值。 ...

  • swift 闭包传值

    场景:A页面跳转到B页面,B页面返回到A页面,(B页面给A页面传值) B页面逻辑:创建block,声明变量,传值 ...

  • 页面间的block传值(B -> A)

    //在B页面的.h中写一个指针函数(结构体),带参数,用户进行传值//在B页面的.h中声明一个指针类型的变量//例...

  • block逆传值页面间的

    @interface SecondViewController : UIViewController@proper...

网友评论

      本文标题:block在页面间的传值

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