#import <UIKit/UIKit.h>
@interface BViewController : UIViewController
@property(nonatomic,strong)void (^ returnStr) (NSString *str);
- (void)returnStr:(void (^) (NSString *str))str;
@end
1.首先要更正自己的一個觀點,屬性爲block函數是能夠被strong修飾的(自己不知道怎麼搞的,一直以爲其職能被assign修飾)
2.那就是關於block的傳值了,直接代碼
在A控制器中
- (IBAction)tiaoZhuan:(id)sender {
//A控制器中調用B控制器中帶有block函數的方法
[self.BVC returnStr:^(NSString *str) {
self.label.text = str;
[self.view setNeedsDisplay];
}];
[self presentViewController:self.BVC animated:YES completion:nil];
}
在B控制器中 .h文件
#import <UIKit/UIKit.h>
@interface BViewController : UIViewController
//這裏的block屬性需要用strong修飾
@property(nonatomic,strong)void (^ returnStr) (NSString *str);
- (void)returnStr:(void (^) (NSString *str))str;
@end
.m文件
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"B-viewDidLoad");
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
[button setTitle:@"返回" forState:UIControlStateNormal];
[button addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
- (void)returnStr:(void (^) (NSString *str))str {
self.returnStr = str;
//str(@"我是反回來的");
}
//返回函數
- (void)back:(UIButton *)sender {
self.returnStr(@"我是反回來的");
[self dismissViewControllerAnimated:YES completion:nil];
}