美文网首页
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在页面间的传值

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