今天主要給大家介紹一下協(xié)議傳值, 它是iOS中一種很常用的協(xié)議方式.
還是先對(duì)window初始化, 把nav的根視圖控制器設(shè)置為vc, 再把nav設(shè)置為window的根視圖控制器. 代碼如下.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
ViewController *vc = [[ViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
self.window.rootViewController = nav;
nav.navigationBar.translucent = NO;
return YES;
然后新建一個(gè)SecondViewController, 也就是第二個(gè)界面, 協(xié)議傳值是從后往前傳的. 也就是要實(shí)現(xiàn)把SecondViewController的值傳給ViewController.
要傳值還是得在第一個(gè)界面寫點(diǎn)東西吧, 我就初始化了一個(gè)label和一個(gè)button, 效果如下.
準(zhǔn)備工作差不多了, 開(kāi)始協(xié)議傳值六步.
1.在SecondViewController(即后一個(gè)界面)的.h文件里聲明一個(gè)協(xié)議方法.
2.同樣在后一個(gè)界面的.h文件中聲明代理人屬性.
這里我就傳一個(gè)簡(jiǎn)單的字符串了, 所以也聲明了個(gè)字符串content.
代碼如下.
在SecondViewController的.m里也需要寫點(diǎn)東西, 我聲明了一個(gè)textField和一個(gè)button. 這個(gè)前邊有介紹, 也很基礎(chǔ), 就不再放代碼了, 就放個(gè)運(yùn)行圖吧.
3.在第二頁(yè)的button點(diǎn)擊事件里命令代理人執(zhí)行協(xié)議方法.
4.在ViewController(前一頁(yè))簽訂協(xié)議.
5.在ViewController(前一頁(yè))的button點(diǎn)擊事件中也設(shè)置個(gè)代理人.
6.實(shí)現(xiàn)協(xié)議方法.
這樣就實(shí)現(xiàn)了從后一頁(yè)(SecondViewController)到前一頁(yè)(ViewController)的傳值, 例子中傳的是一個(gè)字符串的值, 至于從前往后傳值可以使用屬性傳值的方法實(shí)現(xiàn).