iPhone应用程序 Delegate使用方法详解

移动开发 iOS
本文介绍的是iPhone应用程序 Delegate使用方法详解,本文通过一个例子来学习Delegate的使用方法,先来看内容。

iPhone应用程序 Delegate使用方法详解是本文要介绍的内容,通过一个实例让我们快速的去学习,不多说,我们先来看内容。

先举一个例子:

假如"我"的本职工作之一是“接电话”,但"我"发现太忙了或来电太杂了,于是我聘请一位"秘书"分担我“接电话”的工作,如果电话是老板打来的,就让“秘书”将电话转接给“我”。。。

那么,“我”就是A Object. “秘书”就是"我"的“Delegate”。写成代码就是 -- [我 setDelegate:秘书];

delegate的概念出现与mvc(model-view-controller),protocol,单线继承 密切相关

  1. The main value of delegation is that it allows you to easily customize the behavior of several objects in one central object. 

Cocoa 中处理事件的方式有几种,其中一种是你可以重载类中的对应的事件处理方 法,比如MouseDown事件在NSResponse类中就被方法mouseDown:处理,所以所有继承自NSResponse的类都可以重载 mouseDown:方法来实现对MouseDown事件的处理。

另外一种处理方式就是使用Delegate,当一个对象接受到某个事件或者通知的时候, 会向它的Delegate对象查询它是否能够响应这个事件或者通知,如果可以这个对象就会给它的Delegate对象发送一个消息(执行一个方法调用)

协议 Protocol :

我说下我的理解。object-c 里没有多继承。那么又要避免做出一个对象什么都会(super class monster,huge ,super,waste)一个超能对象 本身是否定了面向对象的概念和真谛了。为了让代码更简洁,条理更清楚,可以将部分职责分离。

协议本身没有具体的实现。只规定了一些可以被其它类实现的接口。

  1. @protocal UITextFieldDelegate    
  2. -(BOOL) textFieldShouldReturn:(UITextField *) textField ;    
  3. @end    
  4. @protocal UITextFieldDelegate  
  5. -(BOOL) textFieldShouldReturn:(UITextField *) textField ;  
  6. @end 

delegate 总是被定义为 assign @property

  1. @interface UITextField    
  2. @property (assign) id<UITextFieldDelegate> delegate;    
  3. @end    
  4. @interface UITextField  
  5. @property (assign) id<UITextFieldDelegate> delegate;  
  6. @end  

这样我们就在UITextField内部声明一个委托(delegate),那么就需要委托的代理实现UITextFieldDelegate 中约定的行为

  1. // 首先, 在接口里边声明要使用谁的Delegate     
  2. @interface delegateSampleViewController : UIViewController    
  3.     <UITextFieldDelegate> {}    
  4. @end    
  5.      
  6. // 然后在实现文件中初始化的时候, 设置Delegate为self(自己)     
  7. @implementation delegateSampleViewController    
  8.      
  9. // ....     
  10.     UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 300, 400)];    
  11.     textField.delegate = self;//设置当前的控制器为UITextField的代理,相当于注册(指定)代理人     
  12.     [textField becomeFirstResponder];    
  13.     [cell.contentView addSubview:textField];    
  14.     [textField release];    
  15. // ....     
  16.      
  17. }    
  18.      
  19. // 实现UITextFieldDelegate中约定的行为     
  20. #pragma mark UITextFieldDelegate Method     
  21. // called when 'return' key pressed. return NO to ignore.     
  22. - (BOOL)textFieldShouldReturn:(UITextField *)textField {    
  23.      
  24.     [textField resignFirstResponder];    
  25.     return YES;    
  26. }  

小结:iPhone应用程序 Delegate使用方法详解的内容介绍完了,希望本文读你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-08-05 14:58:58

iPhone CoreAnimat 动画

2011-07-19 14:36:32

iPhone

2011-07-26 09:41:23

iPhone xcode Mac OS X

2011-08-10 16:50:10

iPhone生命周期

2011-08-10 16:08:02

iPhoneProtocol协议

2011-07-21 10:47:37

iPhone Cocoa 委托

2011-08-16 16:40:06

iPhone应用正则表达式OgreKit

2023-08-07 09:01:42

Prism 库开源

2011-08-08 14:07:49

iPhone开发 字体

2011-08-03 17:27:40

iPhone UIScrollVi

2011-08-10 16:57:15

iPhone事件程序包

2011-08-10 17:30:50

iphoneThree20

2012-04-26 13:48:56

iPhone应用发布Ad Hoc

2011-07-26 10:09:08

iPhone 多语言 国际化

2011-07-29 14:08:26

iPhone UTF-8 XML

2011-05-24 10:30:31

PythonNetBeans ID

2011-08-05 13:49:53

iPhone 应用 开发

2011-08-12 14:54:45

iPhone委托

2011-07-21 15:56:32

iPhone 截屏

2011-07-27 17:30:40

iPhone Locate 定位
点赞
收藏

51CTO技术栈公众号