首页 > 代码库 > iOS中使用block传值
iOS中使用block传值
转自:http://blog.sina.com.cn/s/blog_60b45f230100yiaf.html
用此方法传值可以替代委托了。具体例子:
MainView.h
#import <UIKit/UIKit.h> @interface MainView : UIViewController { IBOutlet UIButton* btn; IBOutlet UILabel* labShow; } -(IBAction)push:(id)sender; @end
MainView.m
#import "MainView.h" #import "SecondView.h" @implementation MainView - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { } return self; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; } -(IBAction)push:(id)sender { SecondView *s = [[SecondView alloc] initwithBlock:^(NSString *str){ NSLog(@"%@",str); labShow.text = str; }]; [self.navigationController pushViewController:s animated:YES]; [s release]; } - (void)viewDidUnload { [super viewDidUnload]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } @end
SecondView.h
#import <UIKit/UIKit.h> typedef void (^MyBlock)(NSString *); @interface SecondView : UIViewController { IBOutlet UITextField* txtView; MyBlock my; } -(IBAction)back:(id)sender; -(id)initwithBlock:(MyBlock)str; @end
SecondView.m
#import "SecondView.h" @implementation SecondView -(id)initwithBlock:(MyBlock)str { self = [super init]; if(self) { my = str; } return self; } -(IBAction)back:(id)sender { NSString* s = txtView.text; if(my) { my(s); } [self.navigationController popViewControllerAnimated:YES]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } -(void)dealloc{ Block_release(my); [super dealloc]; } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; } - (void)viewDidUnload { [super viewDidUnload]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } @end
界面:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。