您的位置:首页 > 移动开发 > IOS开发

苹果开发中委托代理(degegate)的理解和使用示例

2010-07-22 16:39 573 查看
委托代理(degegate),顾名思义,把某个对象要做的事情委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理要做的事。反映到程序中, 首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么。委托机制在很多语言中都用到的,这只是个通用的思想,网上会有很多关于这方面的介绍。

那么在苹果开发过程中,用到委托的程序实现思想如下,我主要拿如何在视图之间传输信息做个例子。譬如:在两个页面(UIIview视 图对象)实现传值,用委托(delegate)可以很好做到。

方法:

@interface A:UIView

id transparendValueDelegate;

@property(nomatic, retain) id transparendValueDelegate;

@end

@implemtion A

@synthesize transparendValueDelegate
-(void)Function

{

NSString* value = @"hello";

[transparendValueDelegate transparendValue: value];

}

@end
类B

@interface B:UIView

NSString* value;

@end

@implemtion B

-(void)transparendValue:(NSString*)fromValue

{

value = fromValue;

NSLog(@"the value is %@ ",value);

}

@end
// 下面的设置A代理委托对象为B

//在定义A和B类对象处:

A* a = [[A alloc] init];

B* b = [[B alloc] init];

a. transparendValueDelegate = b;//设置A代理委托对象为B

这样 在视图A和B之间可以通过委托来传值了。
下面这个例子委托有两类:

1、一个视图类对象的代理对象为父视图,子视图用代理实 现让父视图显示别的子视图

2、同一父视图下的一个子视图为另一个子视图的代理对象,让另一个子视图改变自身背景色为给定的颜色
相关附件: DelegateUseDemo.zip (528 K)
欢迎各位进入论坛参与讨论,本帖地址 http://www.cocoachina.com/bbs/read.php?tid-26591.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: