blockの2ページでの転送値
1864 ワード
blockに逆伝値機能があることをずっと知っていて、自分でテストをしました.
最初のページにはlabelがあり、2番目のページにはUItextFieldがあります.
UItextFieldに値を入力し、ナビゲーションバーのbackボタンをクリックすると、UItextFieldの上の値を最初のページのlabelに戻すことができます.
2ページ目のh
.m
最初のページには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