• Block高级使用 传值


    使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值:

      //Block直接或者间接使用了父对象,就会造成循环引用   __block

      //Block声明是用block

            先说一下思想:

            首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButton,其中UILabel是为了显示第二个视图控制器传过来的字符串,UIButton是为了push到第二个界面。

            第二个界面的只有一个UITextField,是为了输入文字,当输入文字,并且返回第一个界面的时候,当第二个视图将要消失的时候,就将第二个界面上TextFiled中的文字传给第一个界面,并且显示在UILabel上。

    //下面我来简单的说一下使用方法

    //在第二个控制器的.h中声明block

    //

    //  SecondViewController.h

    //  Lesson_13_block

    //

    //  Created by 李洪鹏 on 15/7/16.

    //  Copyright (c) 2015 李洪鹏. All rights reserved.

    //

    #import <UIKit/UIKit.h>

     

    typedef void(^TransmitValueBlock)(NSString *);

     @interface SecondViewController : UIViewController

    //block copy

    @property (nonatomic, copy)TransmitValueBlock ablock;

     //Block直接或者间接使用了父对象,就会造成循环引用

    @end

     

    //在第二个控制器中.m中调用这个方法

    - (void)button2Action:(UIBarButtonItem *)sender

    {

      self.ablock(self.secondView.textField.text);

        [self.navigationController popViewControllerAnimated:YES];

    }

     

    //在第一个控制器中.m中回调这个block方法

      

        __weak FirstViewController *heheself = self;

        //block 里面直接使用self的话造成循环引用, 使用 __weak 来解决

        self.block = ^(NSString *string){

      heheself.firstView.label.text = string;

        };

        

    //block的原理就是这样,使用方法还非常多,希望大家多多练习。

  • 相关阅读:
    HDU 3681 Prison Break(状态压缩dp + BFS)
    POJ 2711 Regular Words(DP + 高精度)
    ZOJ 2745 01-K Code(DP)(转)
    DAG模型——硬币问题
    HDU 1619 Unidirectional TSP(单向TSP + 路径打印)
    DAG模型——嵌套矩阵
    HDU 4294 A Famous Equation(DP)
    HDU 3920 Clear All of Them I(DP + 状态压缩 + 贪心)
    POJ 3254 Corn Fields(DP + 状态压缩)
    HDU 2089 不要62(数位DP)
  • 原文地址:https://www.cnblogs.com/lhp-1992/p/4652302.html
Copyright © 2020-2023  润新知