代理模式
如何实现代理者模式
需要被代理的类在接口定义
@interface
中定义自己的协议1
2
3
4
5
6
7
8
9
10
11
12
13
14// xxx.h
@protocol MyTabbarDelegate <NSObject>
// 定义代理者需要实现的方法集合
- (void)onClick:(MyTabbar *)mytabbar clickIndex: (NSInteger) index;
@end
// 类
@interface MyTabbar : UIView
@property (strong, nonatomic) NSArray *tabs;
@property (nonatomic, strong) MyButton *lastSelectBtn;
// 定义代理属性
@property (nonatomic, weak) id<MyTabbarDelegate> delegate;
@end在被代理的类中触发代理 对应的事件信号
1
2
3
4// 如果代理者 实现了对应的方法
if ([self.delegate respondsToSelector:@selector(onClick:clickIndex:)]) {
[self.delegate onClick:self clickIndex:button.tag];
}代理者类设置要实现的协议,并且实现对应的方法
1
2
3
4
5
6
7
8@interface TabViewController ()<MyTabbarDelegate>
@end
// 实现协议方法
- (void)onClick:(MyTabbar *)mytabbar clickIndex:(NSInteger)index {
NSLog(@"cur index is %ld", (long)index);
}