zoukankan      html  css  js  c++  java
  • 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的原理就是这样,使用方法还非常多,希望大家多多练习。

  • 相关阅读:
    视图和同义词的区别
    【MooTools】自定义滚动条小插件
    有理想的程序员必须知道的15件事
    革新:.NET 2.0的自定义配置文件体系初探
    我的2006年学习计划
    为ASP.NET 2.0配置数据源
    通用异常处理框架
    泛型的序列化问题
    实战SVN For Apache2(二)
    LightningFramework系列(一、初步总架构图)
  • 原文地址:https://www.cnblogs.com/lhp-1992/p/4652302.html
Copyright © 2011-2022 走看看