block在页面间的传值

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
最后,希望这篇文章对各位看官们有所帮助。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,276评论 4 61
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,854评论 1 92
  • 20171020陈春兰心赏第67天 亲爱的儿子,今天从学校接你回家你谈到了要开电视的要求,我告诉你...
    依恋君阅读 480评论 0 51
  • 一棵站在风中的树 无悲无喜无怨 那应该是一棵泡桐吧 每个枝桠点着一个花苞 朝着天空的方向待放 像那礼花 向天空和白...
    妮可米唯阅读 270评论 0 1