首页 > 代码库 > iOS代理模式
iOS代理模式
iOS代理模式的简单理解:当一个对象无法直接获取到另一个对象的指针,又希望对那个变量进行一些操作时,可以使用代理模式。
代理主要由三部分组成:
(1)协议:用来指定代理双方可以做什么,必须做什么。
(2)代理:根据指定的协议,完成委托方需要实现的功能。
(3)委托:根据指定的协议,指定代理去完成什么功能。
@protocol TextDelegate
-(void)deliverFirsttext:(NSString* )text1 withDeliverSecondtext:(NSString * )text2;
@end
#import #import "LoginProtocol.h"
@interface LoginViewController : UIViewController
//通过属性来设置代理对象
@property (nonatomic, weak) id delegate;
@end
实现部分:
@implementation LoginViewController
- (void)loginButtonClick:(UIButton *)button {
// 判断代理对象是否实现这个方法,没有实现会导致崩溃
if
([self.delegaterespondsToSelector:@selector(deliverFirsttext:withDeliverSecondtext:
)]) {
// 调用代理对象的登录方法,代理对象去实现登录方法
[self.delegate deliverFirsttext:self.text1.textwithDeliverSecondtext:self.text2.text
];
}
}
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[
super
viewDidLoad];
}
- (IBAction)buttonAction:(id)sender {
SecondViewController *VC =
[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"SecondViewController"];
//设置当前控制器为secondVC的代理
VC.delegate = self;
[self presentViewController:VC animated:YES completion:^{
}];
}
-(void)deliverFirsttext:(NSString *)text1 withDeliverSecondtext:(NSString *)text2{
self.label1.text = text1;
self.label2.text = text2;
}
实现效果截图:
iOS代理模式