IOS中代理的使用频率非常高,这次就介绍一下delegate的基本使用,首先代理分为委托方和代理方
委托方 调用代理的地方
Bviewcontroller.h
/**
委托方第一件事,声明代理协议
*/
@protocol BViewControllerDelegate <NSObject>
-(void)callbackVlaue:(NSString*)backValue;
@end
@interface BViewController : UIViewController
//委托方第二件事,声明代理人属性 (协议类型)
@property(nonatomic,weak)id<BViewControllerDelegate> delegate;
@end
Bviewcontroller.m
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
//委托方第三件事 在适当的实际通知代理人执行代理方法
[self.delegate callbackVlaue:self.field.text];
[self dismissViewControllerAnimated:YES completion:nil];
}
代理方 遵守协议 实现代理的地方
Aviewcontroller
//代理方 第一件事 遵守代理协议
@interface AViewController () <BViewControllerDelegate>
@property(nonatomic)UILabel *label;
@end
@implementation AViewController
//代理方 第二件事 实现协议中的代理方法
-(void)callbackVlaue:(NSString *)backValue {
self.label.text = backValue;
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
BViewController *bvc = [[BViewController alloc]init];
//代理方 第三件事 通知委托方 的代理人 为当前对象
bvc.delegate = self;
bvc.editContent = self.label.text;
[self presentViewController:bvc animated:YES completion:nil];
}
@end