iOS block传值(逆传)

原创 2016年05月31日 23:36:19

block是个好东西,是苹果官方推荐的一种方法,效率高,代码简单,今天用block主要是做一个简单传,暂时不对block详细介绍,关于__block的用法,后期会一一介绍;

接下来,通过一个block,将 SecondViewController 的数值传给  FirstViewController ;

FirstViewController.m

#import "FirstViewController.h"
#import "SecondViewController.h"
@interface FirstViewController ()<UITextFieldDelegate>
{
    //切换到下一个界面
    UIButton *_btn;
    
    //现实从 SecondViewController 传过来的值
    UILabel *_label;
}

@end

@implementation FirstViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view setBackgroundColor: [UIColor yellowColor]];
    
    [self layouUI];
    
}

-(void)layouUI
{
//    创建lable
    _label=[[UILabel alloc] initWithFrame:CGRectMake(100, 60, 120, 40)];
    _label.backgroundColor=[UIColor whiteColor];
    [self.view addSubview:_label];
    
    //切换到 SecondViewController
    _btn=[[UIButton alloc]initWithFrame:CGRectMake(100, 220, 120, 40)];
    [_btn setBackgroundColor:[UIColor cyanColor]];
    [_btn addTarget:self action:@selector(dobtn) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:_btn];
}

-(void)dobtn
{
    SecondViewController *second=[[SecondViewController alloc]init];
    second.mb=^(NSString *str){
        _label.text=str;
    };
    [self.navigationController pushViewController:second animated:YES];
    
}
@end


运行结果如下图:



创建第二个控制器:

SecondViewController.h

#import <UIKit/UIKit.h>

//定义block
typedef void(^Myblock)(NSString *str);

@interface SecondViewController : UIViewController

@property(strong,nonatomic)Myblock mb;


@end


SecondViewController.m

#import "SecondViewController.h"

@interface SecondViewController ()
{
    UIButton *_btn;
    UILabel *_label;
    UITextField *_textField;
}

@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view setBackgroundColor:[UIColor purpleColor]];
    [self layouUI];
}
-(void)layouUI
{
    //    创建一个textfield
    _textField=[[UITextField alloc]initWithFrame:CGRectMake(100, 140, 120, 40)];
    _textField.borderStyle=UITextBorderStyleLine;
    [self.view addSubview:_textField];

    
    _btn=[[UIButton alloc]initWithFrame:CGRectMake(100, 220, 120, 40)];
    [_btn setBackgroundColor:[UIColor cyanColor]];
    [_btn addTarget:self action:@selector(dobtn) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:_btn];
}
-(void)dobtn
{
//    在这里调用block
    self.mb(_textField.text);
    [self.navigationController popViewControllerAnimated:YES];
}

@end


然后在 _textField 写入文字,例如写 welcome to air

如下图:



在第一个控制器上的label就会显示出来第二控制器上写的字符串;

如下图:



如果转载请注明转于:AirZilong的博客

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS(学习) 一个简单的动画效果

参考QQ(语音)按住说话。类似的效果#import "ViewController.h"@interface ViewController () { UIImageView *imageVie...

UIBezierPath 的使用介绍

使用UIBezierPath类可以创建基于矢量的路径。此类是Core Graphics框架关于path的一个封装。使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状。 ...

ios 视图间Block传值

  • 2013年09月29日 09:59
  • 61KB
  • 下载

iOS --- block的一些使用方法(反向传值)

最近有个朋友问我iOS中的block 是怎么用的, 我根据自己的所学把实际应用的一些写法告诉他了 因为我觉得这个主要是更注重实用性, 好了废话不多说,直接上实际的 ------...

IOS-block实现页面之间的传值

利用Block实现两个页面之间的传值,假设有两个控制器control1 和control2,control1上有一个label和一个button,点击button跳转到control2,control...
  • Arack
  • Arack
  • 2016年08月02日 20:05
  • 616

ios block传值

iOS开发中的页面传值方式有很多种,最常见的是代理和属性传值方法,不过,block也可以传值,而且在一些特定的场合中,block传值会更简单,下面是一个我写的一个demo,大家可以参考一下。    ...

iOS UI11_BLOCK传值

// // MainViewController.m // UI11_block练习 // // Created by dllo on 15/8/12. // Copyright (c) 20...

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式;2.通知notifi...

关于iOS 中得block传值问题献给新手

关于block传值类似与代理传值,而block的优点就是不用繁琐的
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS block传值(逆传)
举报原因:
原因补充:

(最多只允许输入30个字)