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的原理就是这样,使用方法还非常多,希望大家多多练习。

  • 相关阅读:
    最原始不用代理服务器的设置
    实现开启和关闭android移动网络(转)
    Android快捷键
    如何终止java线程
    电脑上安装的android虚拟机,能进行基站定位和GPS定位吗?要怎么做才能定位?(转)
    C语言标量类型(转)
    Android种 adb是什么(转)
    ☆☆在Eclipse中编译NDK的so文件(普通安卓项目转换为NDK项目的设定)
    androidSDK也要配置环境变量(转)
    Android控件系列之RadioButton&RadioGroup(转)
  • 原文地址:https://www.cnblogs.com/lhp-1992/p/4652302.html
Copyright © 2011-2022 走看看