標籤:style blog class code java tar
轉自: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
介面: