您的位置:首页 > 移动开发 > IOS开发

iOS使用block从后往前传值

2017-04-06 10:06 387 查看
①在后面控制器的 .h文件
中声明block


 

// 一会要传的值为NSString类型

typedef void (^newBlock)(NSString *);

@interface NewViewController
: UIViewController

// 声明block属性

@property (nonatomic, copy) newBlock block;

// 声明block方法

- (void)text:(newBlock)block;

@end

②在后面控制器的 .m文件
中设置block


 

// 设置block,设置要传的值

- (void)text:(newBlock)block

{

    self.block =
block;

}

- (void)viewWillDisappear:(BOOL)animated

{

 
  [super viewWillDisappear:YES];

    if (self.block != nil)
{

     
  self.block(@"呵呵");

    }

}

③在前面控制器的 .m文件
中接收传来的值


 

#import "ViewController.h"

#import "NewViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{

 
  [super viewDidLoad];

 
  UIButton *button =
[UIButton buttonWithType:(UIButtonTypeRoundedRect)];

    button.frame = CGRectMake(0, 100, 100, 100);

 
  button.backgroundColor =
[UIColor redColor];

 
 
[button addTarget:self action:@selector(push) forControlEvents:(UIControlEventTouchUpInside)];

    [self.view addSubview:button];

}

- (void)push

{

 
  NewViewController *newVC
= [[NewViewController alloc] init];

 
  // 接收block传来的值

    newVC.block =
^(NSString *str){

     
  NSLog(@"%@", str);

    };

 
  [self.navigationController pushViewController:newVC animated:YES];

}

- (void)didReceiveMemoryWarning
{

 
  [super didReceiveMemoryWarning];

 
  // Dispose of any
resources that can be recreated.

}

@end

④最终实现效果:在控制台打印出了"呵呵"

 
  到此,block完成传值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: