iOS开发-block传值

block传值步骤比代理传值步骤简便,实际开发中经常使用到。

block传值分为block属性传值和block方法传值

block属性传值

传值界面操作步骤:

1.声明一个block属性,用来实现下级界面向上级界面传值

2.执行block,并且传递参数

接收传值的界面操作步骤:

1.实现block

需要传值的界面-SecondViewController

@interface SecondViewController :UIViewController

//1.声明一个block属性,用来实现下级界面向上级界面传值

@property(nonatomic,copy) void (^secondBlock)(NSString*);

@property(nonatomic,copy) NSString*labelText;

@end

- (void)popToFirstVC:(UIButton*)sender

{

// 2.执行block,并且传递参数

self.secondBlock(@"路飞");

NSLog(@"----- %@",self.secondBlock);

[self.navigationControllerpopViewControllerAnimated:YES];

}

- (void)pushToNextVC:(UIButton*)sender 

{

// 3.实现block

secondVC.secondBlock= ^(NSString*titleStr) {

weakSelf.label.text= titleStr;

};

[self.navigationController pushViewController:secondVCanimated:YES];

block方法传值

#import

@interface AppTool :NSObject

typedef void(^AppToolBlock)(NSString*aString);

//通过该方法把一个NSInterger类型的数据转化为NSString并且通过block进行回调

- (void)changeNumber:(NSInteger)number andBlock:(AppToolBlock)block;

@end

#import "AppTool.h"

@implementation AppTool

- (void)changeNumber:(NSInteger)number andBlock:(AppToolBlock)block

{

NSString*string = [NSString stringWithFormat:@"%ld", number];

//通过block进行回调

block(string);

}

@end

#pragma mark -在方法中使用block

- (void)changeNumberToString:(UIButton*)sender

{

AppTool*appTool = [[AppTool  alloc] init];

[appTool  changeNumber:10010  andBlock:^(NSString*aString) {

self.label.text= aString;

}];

}

你可能感兴趣的:(iOS开发-block传值)