不知道大家 对block的界面传值了解的如何,我简单的介绍一下吧。
用block可以定义任意的代码片段,可以将其像对象一样传入另一个方法,是c级别的语法,和c中的函数指针很类似。
进入正题吧,比如我们从第一个viewController push到第二个viewController
第一个viewController 的
.h文件
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *showLabel;
- (IBAction)btnPress:(id)sender;
@end
#import "ViewController.h"
#import "SecondViewController.h"
@interface ViewController ()
@property(strong,nonatomic) SecondViewController *vc;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_showLabel.text = @"第一次";
self.vc = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];
__weak ViewController *weakSelf = self;
self.vc.returnTextBlock = ^(NSString *str) {
weakSelf.showLabel.text = str;
};
}
- (IBAction)btnPress:(id)sender {
[self.navigationController pushViewController:self.vc animated:YES];
}
@end
第二个viewController 的
.h文件
#import <UIKit/UIKit.h>
typedef void (^ReturnTextBlock)(NSString *str);
@interface SecondViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *inputText;
@property (nonatomic,copy) ReturnTextBlock returnTextBlock;
@end
#import "SecondViewController.h"
@interface SecondViewController ()
@end
@implementation SecondViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
if (self.returnTextBlock != nil) {
self.returnTextBlock(self.inputText.text);
}
}
@end
赶紧 复制过去尝试下吧 ,希望对你有帮助。