日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

iOS开发那些事-iOS常用设计模式–委托模式案例实现

發布時間:2025/3/15 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发那些事-iOS常用设计模式–委托模式案例实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

書接上回,應用案例

我們以UITextFieldDelegate為例來說明一下委托的使用。 UITextFieldDelegate是控件UITextField的 委托,控件的委托主要負責響應控件事件或控制其他對象。除了UITextField,WebView、UITableView等控件也有相應的委托對象。

打開UITextFieldDelegate的API文檔,其中有4個有關編輯的方法,還要3個其它方法。

這里我們在編輯過程中消息的發送,UITextField編輯過程中與UITextFieldDelegate委托對象之間交互過程。

在 文本框編輯開始前后會發出消息textFieldShouldBeginEditing:和 textFieldDidBeginEditing:,編輯結束前后會發出消息textFieldShouldEndEditing:和 textFieldDidEndEditing:。

為了演示文本框編輯前后發生了什么,我們需要編寫一個簡單的文本框工程,畫面中只有一個文本框。

我們在視圖控制器ViewController中實現UITextFieldDelegate,ViewController是UITextField的委托對象。ViewController.h代碼如下:

#import <UIKit/UIKit.h>@interface ViewController : UIViewController<UITextFieldDelegate>@property (weak, nonatomic) IBOutlet UITextField *textField;@end

?

?

h文件中ViewController實現了UITextFieldDelegate協議,把UITextField 定義為一個弱引用的“輸出口”(“輸出口”概念我們將在UIView與控件一章詳細介紹)。

ViewController.m代碼如下:

@implementation ViewController- (void)viewDidLoad{[super viewDidLoad];self.textField.delegate = self;}#pragma mark — UITextFieldDelegate method- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{NSLog(@”call textFieldShouldBeginEditing:”);return YES;}- (void)textFieldDidBeginEditing:(UITextField *)textField{NSLog(@”call textFieldDidBeginEditing:”);}- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{NSLog(@”call textFieldShouldEndEditing:”);return YES;}- (void)textFieldDidEndEditing:(UITextField *)textField{NSLog(@”call textFieldDidEndEditing:”);}- (BOOL)textFieldShouldReturn:(UITextField *)textField{NSLog(@”call textFieldShouldReturn:”);[textField resignFirstResponder];return YES;}@end

?

?

在 m文件中viewDidLoad 方法self.textField.delegate = self語句極為重要,它將委托對象ViewController分配給文本框對象,除了通過代碼我們也可以通過IB工具進行連線分配。打開故事板文件, 右鍵點擊文本框控件,彈出菜單,用鼠標拖拽位于Outlets(輸出口)下面的delegate后面的圓圈,到View Controller上松開鼠標。

這樣運行代碼,當觸摸文本框使其處于編輯狀態時,在日志中會輸出:

call textFieldShouldBeginEditing:

call textFieldDidBeginEditing:

輸入完成點擊“return”鍵關閉鍵盤,結束編輯狀態,日志中輸出:

call textFieldShouldReturn:

call textFieldShouldEndEditing:

call textFieldDidEndEditing:

textFieldShouldReturn:是點擊“return”鍵發出的消息。我們借助于該消息通過[textField resignFirstResponder]方法關閉鍵盤。

更 復雜的控件(如UITableView)除了委托協議(UITableViewDelegate)還有 數據源協議(UITableViewDataSource)。數據源與委托一樣都是委托設計模式的具應用,委托對象主要對控件對象的事件和狀態變化做出響 應,而數據源對象是為控件對象提供數據。需要注意的是委托中的方法在實現時是可選的,而數據源中的方法一般必須實現。

轉載于:https://www.cnblogs.com/iOS-Blog/archive/2013/02/25/2931620.html

總結

以上是生活随笔為你收集整理的iOS开发那些事-iOS常用设计模式–委托模式案例实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。