美文网首页iOS开发好文ios专题ios
使用Block实现界面反向传值

使用Block实现界面反向传值

作者: J_Knight_ | 来源:发表于2016-07-19 08:54 被阅读704次

需求点


本文介绍如何通过设置block来实现从第二个页面返回到第一个页面时,将第二个页面的数据传给第一个页面。

通过代理设计模式也可以实现该功能,但是笔者个人感觉过程代理模式的设置比较繁琐,还是通过Block来实现更加方便一点。而且block也是iOS进阶的必经之路,多了解还是有好处的。

实现步骤


  1. 在传值类(第二页)添加block属性。
  2. 在接值类(第一页)设置传值类block代码。
  3. 特定时刻在传值类(第二页)向block传入需要传递的值。

代码实现:


第一步:在第二个页面定义block作为传值block的属性

#import <UIKit/UIKit.h>

@interface SecondViewController : UIViewController

//Block传值Step 1: 定义block为传值block的属性
@property (nonatomic, copy)void(^sendValueBlock)(NSString *valueString);

@end

第二步:在从第一个跳转到第二个页面的前一刻,设置第二个页面的block,在block内部写下待执行的操作(将传递过来的值显示在第一个页面)


/**
 *  在第一个页面点击按钮后,初始化block并跳转到第二个页面
 *
 *  @param button 第一个页面的按钮
 */

- (void)goToNextPage:(UIButton *)button
{    
    //Block传值Step 2: 接收值的类取到传递值的类的指针,并设置block

    //因为在block内,firstVC的属性可被更改,所以应该设定其关键字为__weak
    __weak ViewController *firstVC = self;
    SecondViewController *secondVC = [[SecondViewController alloc] init];
    [secondVC setSendValueBlock:^(NSString *string) {
        firstVC.label.text = string;
    }];
    [self.navigationController pushViewController:secondVC animated:YES];
}

第三步:在从第二个页面返回到第一个页面前一刻,将数据传入block

/**
 *  在第二个页面点击按钮后,给block属性传值并回到第一个页面
 *
 *  @param button 第二个页面的按钮
 */
- (void)goToFrontPage:(UIButton *)button
{    
    //Block传值Step 3: 传值类将要传的值传入自己的block里
    self.sendValueBlock(self.textField.text);
    [self.navigationController popViewControllerAnimated:YES];    

}

效果图:


传值过程:由左至右

流程如下:

  1. 在第一页点击“下一页”进入第二页。
  2. 在第二页输入要传的信息(“给第一页的值”),并点击“保存并传给上一页按钮”回到第一页。
  3. 在第一页显示传来的信息(“给第一页的值”)。

Demo可以有~

如果有小伙伴想要Demo请留下邮箱哈~

相关文章

  • 使用Block实现界面反向传值

    需求点 本文介绍如何通过设置block来实现从第二个页面返回到第一个页面时,将第二个页面的数据传给第一个页面。 通...

  • OC中反向传值的方法

    oc中反向传值四种方法 block反向传值 在需要传值的界面: 在接受到传值的界面 单例反向传值 创建一个单例类 ...

  • Block其实很简单

    Block的几种情况 block的使用 1.使用block实现反向传值 2.利用block写响应式编程的技巧

  • Block使用--值得一看

    Block的使用场景: 1、作为本地变量 语法: 实现过程: 2、作为属性(可以反向传值时使用) 语法 实现过程 ...

  • 多线程2

    Block基本演练 block反向传值 主界面 准备等待执行的代码块 如果需要接收外界传入的值,需要定义参数 向目...

  • iOS开发-属性、block、代理、通知传值

    传值在开发中我们会经常用到,传值又分为正向传值和反向传值。从界面一跳转到界面二且将值从界面一传递给界面二使用,称之...

  • IOS Block界面反向传值

    1、在第二个视图控制器的.h文件中定义声明Block属性: //定义block@property (nonatom...

  • iOS Block界面反向传值

    假如我们有一个需求如下:界面A上面有一个button、一个label。从界面A跳转到界面B,在界面B的输入框中输入...

  • block传值

    如果您在阅读我的文章时有疑问 , 请点击这里界面1 和 界面2 block反向传值 , 为第二界面向第一个界面传...

  • iOS技术总结(Block)[整理]

    摘要: . Block代码块结构及几种类型. __block使用.使用block在两个界面中传值问题 官方文档:苹...

网友评论

本文标题:使用Block实现界面反向传值

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