Cocoa设计模式之委托
2012-07-22 08:21
197 查看
protocol-协议,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。
delegate-委托,顾名思义就是委托别人办事,就是当一件事情发生后,自己不处理,让别人来处理。
当一个A view 里面包含了B view,b view需要修改a view界面,那么这个时候就需要用到委托了。
需要几个步骤
1,首先定一个协议
2,a view实现协议中的方法
3,b view设置一个委托变量
4,把b view的委托变量设置成a view,意思就是 ,b view委托a view办事情。
5,事件发生后,用委托变量调用a view中的协议方法
下面分步说明:
1,首先定义一个协议
这是一种正式定义协议的方法,还有一种叫做非正式协议,其实质就是Category,对已有的类的方法进行扩展。
2、a view实现协议中的方法
首先是在头文件中加入实现协议
然后在实现文件中实现协议中的方法
3,b view中设置一个委托变量
在适当的地方调用该委托对象
4,把b view的委托变量设置成a view,意思就是 ,b view委托a view办事情。
5,事件发生后,用委托变量调用a view中的协议方法
delegate-委托,顾名思义就是委托别人办事,就是当一件事情发生后,自己不处理,让别人来处理。
当一个A view 里面包含了B view,b view需要修改a view界面,那么这个时候就需要用到委托了。
需要几个步骤
1,首先定一个协议
2,a view实现协议中的方法
3,b view设置一个委托变量
4,把b view的委托变量设置成a view,意思就是 ,b view委托a view办事情。
5,事件发生后,用委托变量调用a view中的协议方法
下面分步说明:
1,首先定义一个协议
@protocol PlayerDetailDelegate <NSObject> -(void) updatePlayer:(Player *)player; @end
这是一种正式定义协议的方法,还有一种叫做非正式协议,其实质就是Category,对已有的类的方法进行扩展。
2、a view实现协议中的方法
首先是在头文件中加入实现协议
@interface PlayersViewController : UITableViewController<PlayerDetailDelegate>{ Player *selectedPlayer; } @property(nonatomic,strong) NSMutableArray *players; @end
然后在实现文件中实现协议中的方法
-(void) updatePlayer:(Player *)player{ selectedPlayer = player; NSLog(@"name%@",selectedPlayer.name); }
3,b view中设置一个委托变量
@interface PlayerDetailViewController : UIViewController{ id<PlayerDetailDelegate> _playerDelegate; } @property(nonatomic,strong) IBOutlet UITextView *detailView; @property(nonatomic,strong) Player *player; @property(nonatomic,strong) id<PlayerDetailDelegate> _playerDelegate; - (IBAction)buttonPressed:(id)sender; @end
在适当的地方调用该委托对象
- (IBAction)buttonPressed:(id)sender{ if(_playerDelegate != nil && [_playerDelegate respondsToSelector:@selector(updatePlayer:)]){ self.player.name = self.detailView.text; [_playerDelegate updatePlayer:self.player]; } NSLog(@"执行!"); }
4,把b view的委托变量设置成a view,意思就是 ,b view委托a view办事情。
5,事件发生后,用委托变量调用a view中的协议方法
相关文章推荐
- 论.NET反射、委托技术与设计模式关系
- iOS开发之设计模式(三)委托模式(Delegation)
- swift 设计模式---委托(delegate)模式传值
- Swift互用性:采用Cocoa设计模式(Swift 2.0版)
- 委托、事件与Observer设计模式
- Cocoa的单例(singleton)设计模式
- ZT:委托,语言级别的设计模式
- 转载:C#中委托、事件与Observer设计模式
- UI学习 第九章 委托(代理)设计模式      单例设计模式
- java委托设计模式之ComponentUI
- 委托、事件与Observer设计模式
- xcode7 ios9 iOS中设计模式中委托模式(同一工作空间不同工程)异步调用
- 不懂接口、反射、委托、设计模式足足写了5年的代码 -- 写给初学者(谈美女生成器不谈代码生成器)
- Objective-C——协议(Protocol)详解与代理(委托)设计模式
- iOS的代理(委托设计模式)和分类
- cocos2d-x设计模式发掘之九:委托模式
- 【设计模式】--TEMPLATE METHOD 模式 和 STRATEGY 模式 :继承和委托
- .NET反射、委托技术与设计模式
- PHP设计模式系列 - 委托模式
- iOS开发笔记 4、iOS中的Cocoa、设计模式等