iOS使用block從後往前傳值
①在後面控制器的 .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
{
self.block = block;
}
- (void)viewWillDisappear:(BOOL)animated
{
[superviewWillDisappear:YES];
if (self.block != nil) {
self.block(@"呵呵");
}
}
③在前面控制器的 .m檔案 中接收傳來的值
#import "ViewController.h"
#import "NewViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
UIButton *button = [UIButtonbuttonWithType:(UIButtonTypeRoundedRect)];
button.frame = CGRectMake(0, 100, 100, 100);
button.backgroundColor = [UIColorredColor];
[button addTarget:selfaction:@selector(push) forControlEvents:(
[self.view addSubview:button];
}
- (void)push
{
NewViewController *newVC = [[NewViewControlleralloc] init];
// 接收block傳來的值
newVC.block = ^(NSString *str){
NSLog(@"%@", str);
};
[self.navigationControllerpushViewController:newVC animated:YES];
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
④最終實現效果:在控制檯打印出了"呵呵"
到此,block完成傳值