IOS代理delegate的使用

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

猜你喜欢

转载自blog.csdn.net/lee727n/article/details/106207340