首页 > 代码库 > Blocks实现代理传值
Blocks实现代理传值
一、RootViewController:
#import "RootViewController.h" #import "SecondViewController.h" @interface RootViewController () { UILabel *_myLabel; } @end @implementation RootViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; self.title = @"第一页"; UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithTitle:@"下一页" style:UIBarButtonItemStylePlain target:self action:@selector(nextPage)]; self.navigationItem.rightBarButtonItem = item; _myLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 320, 50)]; _myLabel.textAlignment = NSTextAlignmentCenter; _myLabel.text = @"Blocks"; [self.view addSubview:_myLabel]; // Do any additional setup after loading the view from its nib. } -(void)nextPage{ SecondViewController *second = [[SecondViewController alloc]initWithBlock:^(NSString *str) { NSLog(@"%@",str); _myLabel.text = str; }]; [self.navigationController pushViewController:second animated:YES]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
二、SecondViewConroller:
.h文件
#import <UIKit/UIKit.h> typedef void(^myBlock)(NSString *); @interface SecondViewController : UIViewController { myBlock block; } -(id)initWithBlock:(myBlock)str; @end
.m文件
#import "SecondViewController.h" @interface SecondViewController () @end @implementation SecondViewController -(id)initWithBlock:(myBlock)str{ self = [super init]; if(self) { block = str; } return self; } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; myButton.frame = CGRectMake(100, 100, 100, 50); [myButton setTitle:@"点我传值!" forState:UIControlStateNormal]; [myButton addTarget:self action:@selector(clicked) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:myButton]; // Do any additional setup after loading the view from its nib. } -(void)clicked{ NSLog(@"我被点击了!"); if (block) { block(@"哈哈"); } //[self.navigationController popViewControllerAnimated:YES]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. }
Blocks实现代理传值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。