使用block在兩個界面之間進行值傳遞
思路:
先創(chuàng)建兩個視圖控制器與對應的類關聯(lián)分別為ViewController 和NextViewcontroller嗅虏。
在第一個視圖中添加一個UILabel和一個UIButton控件:UILabel顯示從第二個界面中傳回來的值躲胳,UIButton設置跳轉到第二個界面。
第二個視圖中添加一個UITextField控件胯努,輸入文字昼牛,當從第二個界面返回到第一個界面時,即當?shù)诙€界面要消失的時候康聂,將UITextField中所輸入的文字傳遞到第一個界面,并且顯示在第一個界面的label上胞四。
步驟:
1.在storyboard中添加兩個視圖控制器與類關聯(lián)恬汁,其他控件大概如下
2.代碼如下
NextViewController.h
@property (nonatomic, copy) void(^myBlock)(NSString *backValue);
NextViewController.m ?為button添加一個方法
- (IBAction)back:(id)sender {
//將textField中輸入的內容保存到block中
if (self.myBlock) {
self.myBlock(self.textField.text);
}
//關閉第二個視圖
[self dismissViewControllerAnimated:YES completion:nil];
}
ViewController.m?導入NextViewController類 并實現(xiàn)以下方法
//視圖控制器將要跳轉時調用
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NextViewController *nvc = [[NextViewController alloc]init];
//獲取所要跳轉到的視圖控制器,將創(chuàng)建的nvc作為目標控制器
nvc = segue.destinationViewController;
//獲取傳過來的參數(shù) 并傳給label顯示在界面上
nvc.myBlock = ^(NSString *backValue) {
self.label.text = backValue;
};
}
3.效果如下
另外在block中的參數(shù)可以設置多個用逗號隔開