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