iOS學習筆記3---delegate五步曲,輕鬆學會使用delegate
委託delegation是一種簡單但是功能強大的設計模式,它的功能是程式中一個物件代表另一個物件,或者一個物件與另外一個物件協同工作。委託物件保留了另外一個物件的引用,即就是委託,以及在合適的時候傳送訊息給委託。訊息通知事件的委託方法,委託物件將要處理或已經處理。委託可能通過更新本身或者本應用的其他物件的狀態或者外觀來對訊息進行響應,在某些情況下委託也可能返回值,從而影響即將發生事件的處理方式。委託模式的主要價值是讓你通過一箇中心物件,簡單的自定義某些物件的行為。下圖為官方文件的解釋:
在iOS開發中,要搞清楚Delegate或者學會使用Delegate是需要一個過程的。我在學習iOS過程中,最開始對Delegate很不解,隨著專案經驗的增長,慢慢對Delegate有了比較清楚的理解。Delegate本來是軟體架構設計的一種理念。它是為了使檢視之間的邏輯關係更加清晰,檢視之間的關係,不僅僅是跳轉,更重要的是檢視之間資料傳遞。
一般在什麼情況下,需要使用Delegate。當檢視A發生變化時,需要將這個變化告知檢視B,讓檢視B做出相應的反應時,一般這個時候我們就需要使用Delegate。下面舉例說明:
這是一個toolbar控制元件(如上圖紅色區域所示),toolbar控制元件包含拍照、相簿、@、#、表情鍵盤與系統自帶鍵盤切換等功能。當我們選中拍照、相簿、@、#、表情鍵盤與系統自帶鍵盤切換(WBComposeToolBar檢視)按鈕時,檢視控制器(WBComposeViewController)需要根據按下的按鈕來呼叫不同的功能。這時需要解決的問題是當點選WBComposeToolBar檢視的按鈕進行切換裡,讓Delegate告知WBComposeViewController檢視。
通常一個delegate的使用過程,需要5步:
1.建立一個delegate;
2.委託者宣告一個delegate;
3.委託者呼叫delegate內的方法(method);
4.被委託者設定delegate,以便被委託者呼叫;
5.被委託者實現Delegate所定義的方法。
接下來,我們結合專案的程式碼對Delegate的使用過程進行詳細說明:
1.1 第一步:建立一個deleagte,在WBComposeToolBar.h檔案中,通過@protocol建立一個delegate,並宣告可選一個委託方法
@protocol WBComposeToolBarDelegate <NSObject>
@optional
-(void)composeWithBar:(WBComposeToolBar *)toolbar didClickbtn:(HWComposeToolbarButtonType)type;
@end
@optional表明,這個方法是可以不實現的,是可選的。
1.2第二步:委託者宣告一個delegate
@property (nonatomic,weak) id<WBComposeToolBarDelegate> delegate;
1.3第三步:委託者呼叫delegate的方法
-(void)btnclick:(UIButton *)btn
{
if ([self.delegate respondsToSelector:@selector(composeWithBar:didClickbtn:)]) {
[self.delegate composeWithBar:self didClickbtn:btn.tag];
}
}
1.4第四步:被委託者設定delegate
self.toolBar.delegate = self;
1.5第五步:被委託者實現delegate所定義的方法。
-(void)composeWithBar:(WBComposeToolBar *)toolbar didClickbtn:(HWComposeToolbarButtonType)type
{
switch (type) {
case HWComposeToolbarButtonTypeCamera:// 拍照
[self openCamera];
break;
case HWComposeToolbarButtonTypePicture://相簿
[self openAlbum];
break;
case HWComposeToolbarButtonTypeMention://@
break;
case HWComposeToolbarButtonTypeTrend: //#
break;
case HWComposeToolbarButtonTypeEmotion: //表情、鍵盤
[self switchKeyboard];
break;
}
}
通過上面的五步,我們能清楚的看到Delegate是用來實現不同檢視之間的資料互動。
原始碼下載地址:http://download.csdn.net/detail/jasonjwl/9243939
相關文章
- Object C學習筆記16-委託(delegate)Object筆記
- 《會計學》學習筆記筆記
- iOS Block學習筆記iOSBloC筆記
- iOS Runloop學習筆記iOSOOP筆記
- Vue學習筆記(二)------axios學習Vue筆記iOS
- 怎麼輕鬆學習JavaScriptJavaScript
- Vue學習筆記 —— axiosVue筆記iOS
- Axios用法–學習筆記iOS筆記
- iOS runtime學習筆記iOS筆記
- iOS 屬性學習筆記iOS筆記
- iOS指標學習筆記iOS指標筆記
- 學習筆記:帶你十天輕鬆搞定 Go 微服務系列(一)筆記Go微服務
- 學習筆記:帶你十天輕鬆搞定 Go 微服務系列(二)筆記Go微服務
- 如何輕鬆學習 Kubernetes?
- iOS學習筆記02 UIScrollViewiOS筆記UIView
- iOS執行緒學習筆記iOS執行緒筆記
- iOS學習筆記-動畫篇1iOS筆記動畫
- iOS arc VS mrc學習筆記iOS筆記
- 【JavaScript學習筆記】if使用JavaScript筆記
- 看動畫輕鬆學會 Raft 演算法動畫Raft演算法
- 輕鬆學會原始碼編譯Vim 8.0原始碼編譯
- 學會XPath,輕鬆抓取網頁資料網頁
- Yii2 - Active Record 輕鬆學習
- iOS學習筆記43 Swift(三)類iOS筆記Swift
- iOS學習筆記05 觸控事件iOS筆記事件
- 【學習筆記】Go Modules 使用筆記Go
- webpack 學習筆記:使用 lodashWeb筆記
- numpy的學習筆記\pandas學習筆記筆記
- IOS學習之一個示例弄懂代理(delegate)和協議iOS協議
- 輕鬆學會 React 鉤子:以 useEffect() 為例React
- IOS學習筆記——iOS元件之UIScrollView詳解iOS筆記元件UIView
- 如何輕鬆學習Python資料分析?Python
- 萬字長文,帶你輕鬆學習 SparkSpark
- 輕鬆學習 JavaScript(8):JavaScript 中的類JavaScript
- 【學習筆記】數學筆記
- iOS學習筆記--PresentedVC自定義彈窗iOS筆記
- Xamarin 學習筆記 - 配置環境(Windows & iOS)筆記WindowsiOS
- iOS學習筆記04 檢視切換iOS筆記