標籤:
第一個控制器:
-(void)barAction:(UIBarButtonItem*)sender
{
NextViewController *next=[[NextViewController alloc]init];
//拿當前頁面的值傳到後一個頁面
next.stringValue=self.rv.textField.text;//屬性傳值
//block傳值
__weak RootViewController *weakSelf=self;//weakSelf可以在block中修改,__week改變相互持有的狀態,避免釋放的時候無法釋放
//block前面傳後面
//next.pv=^{
// return weakSelf.rv.textField.text;
//};
//block傳值
next.mb=^(NSString *str){
weakSelf.rv.textField.text=str;
};
[self.navigationController pushViewController:next animated:YES];
}
第二個控制器:
.h檔案
typedef void(^MyBlock)(NSString *str);//block傳值,定義一個block塊
//typedef NSString* (^PassValue)();//block前面傳後面
@interface NextViewController : UIViewController
//接受前一個頁面傳過來的值
@property(nonatomic,strong)NSString *stringValue;//屬性傳值
//block傳值
@property(nonatomic,copy)MyBlock mb;//block傳值
//@property(nonatomic,copy)PassValue pv;//block前面傳後面
.m檔案
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UIBarButtonItem *bar=[[UIBarButtonItem alloc]initWithTitle:@"退回" style: UIBarButtonItemStyleDone target:self action:@selector(barAction:)];
self.navigationItem.leftBarButtonItem=bar;
//用前一個頁面傳過來的值賦給當前頁面
self.nv.textField.text=self.stringValue;//屬性傳值
//self.nv.textField.text=self.pv;//block前面傳後面
}
-(void)barAction:(UIBarButtonItem*)sender
{
self.mb(self.nv.textField.text);//block傳值
[self.navigationController popViewControllerAnimated:YES];
}
iOS block傳值和屬性傳值