代理,顾名思义就是委托别人办事,当一件事发生后,自己不处理,让别人来处理。代理本身是一种设计模式。是把一个类自己需要做的一部分事情,让另一个类来完成。代理传值就是要声明一个协议,声明一个遵守这个协议的代理变量,在另一个需要传值的界面,实现这个代理里的方法,以实现代理传值的功能。
* 在LGCalendar.h文件里声明一个协议:
@protocol LGCalendarDelegate <NSObject>
@optional
- (void)currentDate:(NSString *)dateStr;
@end
- 再LGCalendar.h文件的@interface下面声明一个变量:
@property (nonatomic, assign) id<LGCalendarDelegate> delegate;
- 在LGCalendar.m文件里需要传值的地方实现代理
if (self.delegate && [self.delegate respondsToSelector:@selector(currentDate:)]) {
[self.delegate currentDate:self.dateString];
}
*在其他控制器里调用该代理方法:
1.遵守协议
@interface CalenderVC ()<LGCalendarDelegate>
2.给代理赋值
LGCalendar *calendar = [[LGCalendar alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, 240)];
[self.view addSubview:calendar];
calendar.delegate = self;//设置代理
self.LGCalendar = calendar;
3.实现代理方法
-(void)currentDate:(NSString *)dateStr
{
NSLog(@"%@",dateStr);
}