blockの2ページでの転送値

1864 ワード

blockに逆伝値機能があることをずっと知っていて、自分でテストをしました.
最初のページにはlabelがあり、2番目のページにはUItextFieldがあります.
UItextFieldに値を入力し、ナビゲーションバーのbackボタンをクリックすると、UItextFieldの上の値を最初のページのlabelに戻すことができます.
#import"ViewController.h"

#import"SecondViewController.h"

@interfaceViewController()

{

UILabel*label;

}

@end

@implementationViewController

- (void)viewDidLoad {

[superviewDidLoad];

label= [[UILabelalloc]initWithFrame:CGRectMake(100,100,100,50)];

label.backgroundColor= [UIColorwhiteColor];

[self.viewaddSubview:label];

self.navigationItem.rightBarButtonItem= [[UIBarButtonItemalloc]initWithTitle:@"next"style:UIBarButtonItemStyleDonetarget:selfaction:@selector(next:)];

}

-(void)next:(UIBarButtonItem*)sender{

SecondViewController*sVC= [[SecondViewControlleralloc]init];

[self.navigationControllerpushViewController:sVCanimated:YES];

sVC.block=^(NSString*string)

{

label.text= string;

returnstring;

};

2ページ目のh
#import

// sendValue block

typedefNSString*(^sendValue)(NSString*) ;

@interfaceSecondViewController :UIViewController

// block 

@property(nonatomic,strong)sendValueblock;

@end

.m
#import"SecondViewController.h"

@interfaceSecondViewController()

{

UITextField*textField;

}

@end

@implementationSecondViewController

- (void)viewDidLoad {

[superviewDidLoad];

textField= [[UITextFieldalloc]initWithFrame:CGRectMake(100,100,100,50)];

textField.backgroundColor= [UIColorwhiteColor];

[self.viewaddSubview:textField];

self.navigationItem.rightBarButtonItem= [[UIBarButtonItemalloc]initWithTitle:@"back"style:UIBarButtonItemStyleDonetarget:selfaction:@selector(back:)];

}

-(void)back:(UIBarButtonItem*)sender{



self.block(textField.text);// block

[self.navigationControllerpopToRootViewControllerAnimated:YES];

}

@end