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;
}
实现效果截图:


原文:http://www.cnblogs.com/lizlblog/p/6142230.html