UI中协议是指类与类之间的通信, 通过指定代理来对其他类中实现方法. 协议分为系统内部协议和User自定义协议, 这里先讲自定义协议.
首先需要制订协议并设定代理人
SecondViewController.h文件
@protocol SecondViewControllerDelegate <NSObject>
@required//必须实现的方法
- (void)changeValue;
@optional
@end
协议中@required的方法名在要实现方法的类中, 方法名必须统一
@optional中的方法可执行也可以不执行
@property (nonatomic, assign) id<SecondViewControllerDelegate>delegate;
把代理人设成属性,方便在其他界面的调用, (assign是为了不使对象进行循环调用)
SecondViewController.m文件
- (void)action
{
[self.delegate changeState];//所要完成的代理方法
[self dismissViewControllerAnimated:YES completion:nil];
}
在action中必须通过触发事件将必须实现的方法传到另一个界面(可以用各种触发事件button,touch,等等等)
FirstViewController.m文件
在此文件中必须遵循协议,同样方法也必须在此文件中执行
@interface MainViewController ()<SecondViewControllerDelegate>
......
- (void)action
{
SecondViewController *second = [[SecondViewController alloc] init];
second.delegate = self;
[self presentViewController:second animated:YES completion:nil];
[second release];
}
在.m文件中也可以定义一个触发事件,也可以直接在viewDidLoad中直接调用()
- (void)changeState
{
NSLog(@"我过来了");
}
代理方法必须执行,内部的实现的功能可以由User自行编写