精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS開發之協議:代理傳值

移動開發 iOS
剛開始做iOS開發的時候,對 protocol、delegate 的理解一直都是暈暈乎乎一知半解的狀態,不知道兩UIViewController之間怎么進行傳值。現在時間久了就寫出來幫助新手們學習與理解,并提供了源碼下載。

剛開始做iOS開發的時候,對 protocol、delegate 的理解一直都是暈暈乎乎一知半解的狀態,不知道兩個UIViewController之間怎么進行傳值。

面試過幾個童鞋,問道怎么用 delegate 對兩個UIViewController 進行傳值的時候,回答的都是模棱兩可的。今天又有童鞋問我這個問題,所以干脆寫個blog說明一下。

1、協議(protocol),就是使用了這個協議后,必須按照協議規定的內容來處理事情,協議中要求的方法必須實現(@optional的方法除外)。

protocol是一種語法,它提供了一個很方便的、實現delegate模式的機會。

定義protocol如下:

  1. @protocol ClassBDelegate<NSObject> 
  2. - (void)methodOne; 
  3. @optional 
  4. - (void)methodTwo:(NSString *)value; 
  5. @end

定義了一個ClassB的協議,這個協議中包含兩個方法,其中methodTwo為可選的。

在ClassA的頭文件(ClassA.h)中實現這個協議,如下代碼:

  1. @interface ClassA<ClassBDelegate> 
  2. @end

在ClassA的實現文件(ClassA.m)中實現ClassBDelegate的兩個方法,其中methodTwo可以不實現,如下:

  1. - (void)methodOne{ 
  2.     // 具體實現內容 
  3.  
  4. - (void)methodTwo:(NSString *)value{  
  5.     // 具體實現內容   
  6. }

2、代理(delegate),顧名思義就是委托別人辦事,當一件事情發生后,自己不處理,讓別人來處理。

delegate和protocol沒有關系。delegate本身是一種設計模式。是把一個類自己需要做的一部分事情,讓另一個類(也可以就是自己本身)來完成。

在ClassB的頭文件(ClassB.h)中定義一個代理如下:

  1. @interface ClassB 
  2. @property (nonatomic, unsafe_unretained) id<ClassBDelegate> delegate; 
  3. @end

這樣,當我們在ClassB的實現文件(ClassB.m)中遇到想讓別的類(如 ClassA)處理的問題時,就可以這樣

  1. [self.delegate methodOne]; 
  2. [self.delegate methodTwo:@"需要傳遞的值"]; 

3、上邊簡單的介紹了一下協議與代理,現在開始講兩個UIViewController之間怎么進行傳值的事例。

首先啟動Xcode,從菜單選擇file-New Project...,彈出如下窗口:

選擇Single View Application,然后點擊 Next,彈出如下窗口:

a、給工程取個名稱為 DelegateByValue;

b、下邊的組織名稱寫自己所在的組織,這里寫的是我個人的名稱;

c、公司標識分為兩部分,com也就是Company(公司)的意思,iostour寫自己所在的公司名稱,這里我寫的是iOS之旅的iostour;

d、類前綴,這個可以隨便,不過我這里寫的是W,因為我姓衛,所以取其首字母,這樣公司同事一看到這個類就知道是我寫的;

e、設備選擇iPhone;

f、我們用xib的方式編寫,故此處不勾選;

g、使用ARC機制,勾選;

h、該事例不做單元測試,不勾選。

然后單擊 Next,彈出如下窗口:

選擇一個存儲工程的目錄,然后單擊 Create創建一個工程,創建完成后的目錄結構如下:

接下來我們需要在兩個Controller之間進行傳值,由于創建工程的時候已經自動為我們生成了一個WViewController,所以我們只需要在創建一個就Controller就好啦。

鼠標右鍵DelegateByValue,點擊New File...  如下:

然后彈出如下窗口

選擇iOS>Cocoa Touch >Objective-C Class,然后單擊 Next,彈出如下窗口:

然后,取名為WTwoViewController,單擊 Next,選擇存儲目錄,然后Create。

接下來為WTowViewController 創建一個.xib文件,步驟以此如下:

a、鼠標右鍵DelegateByValue,點擊New File...

b、然后彈出如下窗口:

這次我們選擇iOS > User Interface > View,單擊 Next,取名為WTwoViewController,然后Create。

創建好WTwoViewController后,我們讓WTwoViewController.xib與WTwoViewController.h關聯起來,如下圖:

按照上圖1、2、3的步驟依次進行,選中1,點擊2,設置3 Class為WTwoViewController,然后回車,然后如下圖:

點擊4、按住5 view后邊的空心圓,拖動到6 view上,然后松手及

接下來給view上拖一個UITextField和一個UIButton,并給UITextField起名為txtValue,給UIButton設置一個Action,起名為pressChange

步驟如下:

1、分屏顯示xib與代碼,

2、選擇UITextField,并按住control鍵, 拖動到右側的代碼(WTwoViewController.h)區域,會彈出如下窗口:

為其設置名稱,然后點擊Connect;

3、同樣,選擇UIButton,并按住control鍵,拖動到右側代碼(WTwoViewController.h)區域,會彈出如下窗口:

這次因為是要給UIButton設置點擊事件,所以改變1 Connection為Action,然后設置名稱,點擊Connect。

至此WTwoViewController的窗口視圖以設置完成。

同樣步驟設置WViewController.xib窗口。

給 view 上拖一個UILabel和一個UIButton,并給UILabel起名為lblValue,給UIButton設置一個Action,起名為pressCasting。

至此窗口設置部分已經全部完成。

接下來在WTwoViewController.h中定義一個協議,WTwoViewControllerDelegate,并給WTwoViewController定義一個代理,代碼如下:

  1. // 
  2. //  WTwoViewController.h 
  3. //  DelegateByValue 
  4. // 
  5. //  Created by wzrong on 13-7-20. 
  6. //  Copyright (c) 2013年 wzrong. All rights reserved. 
  7. // 
  8. #import <UIKit/UIKit.h> 
  9. @protocol WTwoViewControllerDelegate <NSObject> 
  10. - (void)changeValue:(NSString *)value; 
  11. @end 
  12. @interface WTwoViewController : UIViewController 
  13. @property (nonatomic, unsafe_unretained) id<WTwoViewControllerDelegate> delegate; 
  14. @property (nonatomic, strong) IBOutlet UITextField *txtValue; 
  15. - (IBAction)pressChange:(id)sender; 
  16. @end 

接下來在WTwoViewController.m中的 - (IBAction)pressChange:(id)sender 方法中把代理派發出去,順便把窗口給銷毀,代碼如下:

  1. - (IBAction)pressChange:(id)sender { 
  2.     [self.delegate changeValue:self.txtValue.text]; 
  3.     [self dismissViewControllerAnimated:YES completion:nil]; 

WTwoViewController中的設置已經完成,接下要在WViewController中調用WTwoViewController,并實現WTwoViewControllerDelegate代碼。

首先在WViewController.h中實現代理,代碼如下:

  1. // 
  2. //  WViewController.h 
  3. //  DelegateByValue 
  4. // 
  5. //  Created by wzrong on 13-7-20. 
  6. //  Copyright (c) 2013年 wzrong. All rights reserved. 
  7. // 
  8. #import <UIKit/UIKit.h> 
  9. #import "WTwoViewController.h" 
  10. @interface WViewController : UIViewController<WTwoViewControllerDelegate> 
  11. @property (strong, nonatomic) IBOutlet UILabel *lblValue; 
  12. - (IBAction)pressCasting:(id)sender; 
  13. @end 

其在WViewController.m的 - (IBAction)pressCasting:(id)sender 方法中調用WTwoViewController,并設置代理的回調方法,代碼如下:

  1. - (IBAction)pressCasting:(id)sender { 
  2.     WTwoViewController *controller = [[WTwoViewController alloc]initWithNibName:@"WTwoViewController" bundle:nil]; 
  3.     controller.delegate = self; 
  4.     [self presentViewController:controller animated:YES completion:nil]; 
  5.  
  6. - (void)changeValue:(NSString *)value{ 
  7.     // 改變UILabel的值 
  8.     self.lblValue.text = value; 

OK,搞定。

這里只實現了從WTwoViewController到WViewController的傳值,大家可以自己做做從WViewController到WTwoViewController的傳值。

工程源碼傳送門DelegateByValue

責任編輯:閆佳明 來源: cnblogs
相關推薦

2012-05-14 21:14:07

Android頁面傳值

2017-12-25 14:59:47

APP架構iOS協議

2013-07-22 14:33:15

iOS開發ASIHTTPRequ

2011-05-19 17:49:08

ActivityAndroid開發

2014-07-23 13:17:53

iOSUITextField

2014-07-21 14:49:35

iOSUILabel

2011-08-02 11:07:42

iOS開發 UIWebView

2017-02-15 09:25:36

iOS開發MQTT

2011-08-11 16:50:04

iOSTwitter

2013-07-09 14:36:24

2014-10-22 09:36:41

TCPIP

2011-04-06 11:41:25

Java動態代理

2013-07-29 04:51:41

iOS開發iOS開發學習file列表查看

2013-04-11 16:08:50

iOS開發技巧積累

2013-07-25 15:19:23

iOS開發學習Xcode打包framiOS開發

2014-08-08 10:12:44

IRC

2013-07-25 15:15:26

iOS開發學習iOS全局變量

2010-06-28 15:28:27

SNMP協議代理

2010-06-12 18:00:16

ARP協議

2014-06-13 13:47:31

UDP
點贊
收藏

51CTO技術棧公眾號

日韩电影在线免费| 清纯唯美亚洲经典中文字幕| 国产精品久久影院| 亚洲综合在线做性| 久久午夜免费视频| 成人av动漫在线观看| 日韩一级片在线播放| 波多野结衣家庭教师在线| 国产九色在线| 国产一区二区三区免费播放| 韩国国内大量揄拍精品视频| av手机在线播放| **爰片久久毛片| 色先锋久久av资源部| 91视频成人免费| 水莓100在线视频| 精品无码三级在线观看视频 | 欧美熟妇精品一区二区| 老色鬼在线视频| 成人欧美一区二区三区| 久久精品ww人人做人人爽| 国产精品免费无遮挡| 中文久久精品| 欧美精品在线免费观看| 影音先锋制服丝袜| 日本亚洲不卡| 日韩午夜中文字幕| 成年网站在线播放| 嗯啊主人调教在线播放视频| 亚洲另类春色国产| 亚洲精品中字| 精品久久久久一区二区三区| 国产成人亚洲综合a∨婷婷| 国产成人欧美在线观看| 国产一级精品视频| 亚洲无线视频| 欧美xxxx综合视频| 国产成人在线网址| 国产a久久精品一区二区三区| 欧美sm美女调教| 五月天视频在线观看| 成人自拍av| 欧美午夜片在线免费观看| 蜜桃视频一区二区在线观看| 中文字幕日本在线| 国产性做久久久久久| 精品一卡二卡三卡四卡日本乱码 | 二区三区四区视频| 激情婷婷综合| 亚洲深夜福利视频| 亚洲熟妇一区二区三区| 欧美一级一片| 日韩电影第一页| 久久久高清视频| 99re8这里有精品热视频免费| 日韩视频一区二区在线观看| 91香蕉视频在线观看视频| 中文字幕成人| 91精品久久久久久久久99蜜臂| 婷婷免费在线观看| 日韩午夜视频在线| 91麻豆精品久久久久蜜臀 | 日韩精品一区二区不卡| 精品电影一区| 97热精品视频官网| 欧美一级特黄视频| 久久久国产亚洲精品| 日本一区二区在线播放| 国产精品变态另类虐交| 日韩午夜av| 欧美一区二区.| 亚洲国产成人精品女人久久| 日韩不卡一区二区三区| 国产区精品在线观看| 国产又粗又猛又黄又爽| 国产乱淫av一区二区三区| 成人资源av| 亚洲 欧美 自拍偷拍| 91视频com| 日韩欧美一区二区三区久久婷婷| 91这里只有精品| 日韩美女视频一区| 成年女人18级毛片毛片免费| 手机在线观看av网站| 欧洲精品一区二区三区在线观看| 黄色一级片免费的| 成人黄色av网址| 精品视频在线观看日韩| 精品伦精品一区二区三区视频密桃| 99精品电影| 九色91av视频| 黄色在线视频网址| 美女网站一区二区| 国产传媒一区| 国产中文字幕在线视频| 自拍偷自拍亚洲精品播放| 国产精品又粗又长| jizz亚洲女人高潮大叫| 精品奇米国产一区二区三区| 蜜桃av免费看| 欧美精品导航| 国产成人免费av| 亚洲av无码国产综合专区| 91在线高清观看| 日本黄色播放器| 99riav视频在线观看| 欧美亚洲图片小说| 精品人妻在线视频| 欧美好骚综合网| 69久久夜色精品国产7777| 97人妻精品一区二区三区视频| 国产aⅴ精品一区二区三区色成熟| 欧美性天天影院| 日韩欧美一起| 欧美另类久久久品| 美女爆乳18禁www久久久久久 | 动漫视频在线一区| 深夜福利亚洲导航| av资源免费观看| 国产精品资源在线| 亚洲精品不卡| 在线精品亚洲欧美日韩国产| 日韩精品中文字幕一区二区三区| 欧美一区二区三区粗大| 老鸭窝91久久精品色噜噜导演| 亚洲综合社区网| 幼a在线观看| 色综合天天综合色综合av| 麻豆传媒在线看| 99久久婷婷国产综合精品电影√| 日韩女在线观看| 性感美女福利视频| 亚洲一区日韩精品中文字幕| www.五月天色| 久久久久久久久丰满| 国产精品人成电影在线观看| 久草福利在线视频| 精品国产91久久久久久老师| 91成人在线观看喷潮蘑菇| 国产精品久久天天影视| 国产精品一区二区在线| 国产专区在线播放| 91国内精品野花午夜精品| 亚洲av片不卡无码久久| 在线亚洲欧美| 久久av一区二区三区漫画| 国模雨婷捆绑高清在线| 精品国产a毛片| 久久久久亚洲av成人片| 福利一区二区在线| 成人免费观看cn| 露出调教综合另类| 欧美性受xxxx黑人猛交| 日本一区高清| 91久久精品午夜一区二区| 国产ts在线播放| 日韩av不卡在线观看| 亚洲国产精品久久久久婷婷老年 | 欧美视频一区二区三区四区| 精品亚洲aⅴ无码一区二区三区| 老司机久久99久久精品播放免费| 清纯唯美一区二区三区| av成人亚洲| 久久国产加勒比精品无码| 国产黄色片av| 亚洲综合色视频| 成人午夜精品无码区| 国产亚洲精品bv在线观看| 欧美二区在线看| 国产伊人久久| 欧美另类99xxxxx| 亚洲精品一区二区三区新线路 | 999精品嫩草久久久久久99| 美女精品久久久| 欧美一级性视频| 色婷婷综合久久久久中文一区二区 | av激情综合网| 日韩一级在线免费观看| 久久国产成人精品| 99热99热| 黑人精品一区| 久久夜精品va视频免费观看| 免费国产羞羞网站视频| 色婷婷av一区| 久久久久亚洲av片无码| 不卡电影一区二区三区| 亚洲三级视频网站| 欧美日韩1080p| 麻豆蜜桃91| 动漫一区二区三区| 4438全国成人免费| 欧美三级理伦电影| 精品国产露脸精彩对白| 中文字幕日韩三级| 亚洲福利一区二区| 99在线视频免费| 丁香五精品蜜臀久久久久99网站 | 免费人成视频在线| 久久久久久久久97黄色工厂| 亚洲一区二区中文字幕在线观看| 午夜亚洲影视| 欧美日韩激情四射| 欧美肉体xxxx裸体137大胆| www国产亚洲精品| 欧美成人免费电影| 久久久久久国产| 午夜在线视频播放| 精品电影一区二区| 91片黄在线观看喷潮| 色婷婷国产精品久久包臀| 久久久久亚洲av无码专区体验| 26uuu国产一区二区三区| 一级黄色高清视频| 男人的天堂久久精品| 真人抽搐一进一出视频| 欧美gayvideo| 欧美一区二区在线| 国产亚洲精品美女久久| 亚洲一区二区三区久久| 成人在线免费电影网站| 97超级碰碰碰久久久| 中中文字幕av在线| 日韩视频精品在线| 国产在线观看精品一区| 亚洲国产另类久久精品| a天堂视频在线| 欧美久久久久中文字幕| 丰满人妻一区二区三区四区| 精品欧美一区二区三区| 麻豆视频在线观看| 中文字幕在线一区| 林心如三级全黄裸体| 国产肉丝袜一区二区| www.免费av| 99视频在线精品| 欧美日韩一区二区三区四区五区六区| 国产一区二区三区四区在线观看| 五月天av在线播放| 另类成人小视频在线| 我看黄色一级片| 日韩精品欧美成人高清一区二区| 日韩a在线播放| 亚洲综合电影一区二区三区| 激情伊人五月天| 一区二区高清| 131美女爱做视频| 亚洲免费激情| 1024av视频| 羞羞视频在线观看欧美| 日本欧美黄色片| 亚洲永久免费精品| 无码人妻丰满熟妇区五十路百度| 亚洲欧美卡通另类91av| 男女av免费观看| 日韩成人午夜电影| 欧美精品性生活| 久久av资源网| 九九热视频免费| 国产成人亚洲精品青草天美| 稀缺呦国内精品呦| 久久综合色鬼综合色| 国产精久久一区二区三区| 欧美国产日本韩| 北条麻妃在线观看视频| 亚洲乱码中文字幕综合| 国产亚洲欧美精品久久久久久| 午夜精品久久久久久久久久| 亚洲日本视频在线观看| 欧美色男人天堂| 国产三级午夜理伦三级| 亚洲第一视频网| 你懂的视频在线| 中国日韩欧美久久久久久久久| 老司机免费在线视频| 欧美成人免费观看| 黄视频网站在线观看| 国产精品久久久999| 91麻豆精品一二三区在线| 国产精华一区二区三区| 先锋影音国产精品| 亚洲视频电影| 亚洲高清毛片| www.欧美日本| 国产精品1024久久| 亚洲永久精品ww.7491进入| 国产精品你懂的在线| 免费在线观看一级片| 欧美天天综合色影久久精品| 一区二区三区免费观看视频| 亚洲成人网在线| www.中文字幕久久久| 欧美精品久久久久a| 成人在线免费| 久久精品一二三区| 国产精品国产一区| 国产男女无遮挡| 国内成人精品2018免费看| 亚洲黄色免费在线观看| 亚洲欧洲韩国日本视频| 久久久久久久久影院| 欧美精品久久99| 青梅竹马是消防员在线| 久久6精品影院| 欧美成人精品三级网站| 国产精品一区在线播放| 999国产精品永久免费视频app| 欧美 国产 综合| 国产99久久久久久免费看农村| 纪美影视在线观看电视版使用方法| 午夜精品成人在线视频| 国产裸体永久免费无遮挡| 亚洲欧美综合精品久久成人| 欧美xxxx黑人又粗又长| 国产精品嫩草影院久久久| 久久激情av| 日本男女交配视频| 九色综合狠狠综合久久| 在线免费观看视频| 黑丝美女久久久| 国产91免费看| 操日韩av在线电影| 亚洲黑人在线| 天堂社区 天堂综合网 天堂资源最新版| 午夜精品av| 在线免费视频一区| 国产日韩欧美制服另类| 黄色片视频网站| 欧美精品一区二区三区高清aⅴ| 男人天堂手机在线| 国产精品一区二区三区在线播放| 九九视频免费观看视频精品| 99精品人妻少妇一区二区| 成人av网址在线| 久久久精品国产sm调教| 91精品视频网| 黄色免费网站在线观看| 成人黄色免费片| 久久要要av| 岛国av免费在线| 国产精品国产三级国产普通话蜜臀| 狠狠人妻久久久久久综合| 国产视频精品一区二区三区| 超碰激情在线| 国产一区二区三区四区五区加勒比 | 成人激情视屏| 日韩三级电影免费观看| 三级一区在线视频先锋| 精品成人无码一区二区三区| 色94色欧美sute亚洲13| 国产精品久久久久一区二区国产 | 91精品国产色综合久久不卡粉嫩| 亚洲春色综合另类校园电影| 日韩成人av影视| 亚洲熟女少妇一区二区| 欧美精品一级二级三级| 91高清在线观看视频| 国产福利久久| 亚洲久久成人| 丝袜美腿中文字幕| 在线亚洲欧美专区二区| 超碰免费97在线观看| 91精品久久久久久久久久| 综合精品一区| 国产精品成人99一区无码| 色综合久久中文综合久久牛| 成人精品一区二区| 亚洲专区中文字幕| 日韩午夜免费| 中文字幕免费视频| 欧美高清性hdvideosex| 色噜噜狠狠狠综合欧洲色8| 国产综合色一区二区三区| 日韩制服丝袜av| xxxx日本少妇| 国产视频自拍一区| 99热这里有精品| 无码专区aaaaaa免费视频| 国产区在线观看成人精品| 国产精品怡红院| 97人人做人人爱| 成人免费a**址| 中文字幕永久免费| 色婷婷av一区| 69xxx在线| 久久久久久国产精品mv| 青椒成人免费视频| 国产精彩视频在线观看| 在线精品高清中文字幕| 亚洲日本va午夜在线电影| 91淫黄看大片| 亚洲国产精品一区二区久久| av片在线看| 国产一区在线观| 麻豆成人综合网| 久热这里只有精品6| 另类视频在线观看| 国产一区二区三区电影在线观看 | 嫩呦国产一区二区三区av| 国产午夜伦鲁鲁| 亚洲美女视频在线观看|