1、协议头文件UserDelegate.h
@protocol UserDelegate <NSObject>
@required
- (void)refresh;
@optional
- (void)refresh_optional;
@end
2、协议的遵循者,实现者
import "ViewController.h"
#import "PresentController.h"
#import "UserDelegate.h"
@interface ViewController ()<UserDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)click:(id)sender {
PresentController *vc = [[PresentController alloc] init];
vc.delegate = self;
[self presentViewController:vc animated:YES completion:nil];
}
- (void)refresh{
NSLog(@"haha");
}
3、协议的委托者
#import <UIKit/UIKit.h>
#import "UserDelegate.h"
@interface PresentController : UIViewController
@property(nonatomic,weak)id<UserDelegate>delegate;
@end
#import "PresentController.h"
@interface PresentController ()
@end
@implementation PresentController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
if ([self.delegate respondsToSelector:@selector(refresh)]) {
[self.delegate refresh];
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}