delegate:(1)
代理:
首先我们假如有两个视图控制器A和B 。我们在A中建立一个label,在b中建立一个 button,这时我们想要的到b中button的内容,我们就采用代理( 当然用沙盒也可以,将b中的值保存在沙盒中,然后通过全局变量带回给A). 所谓代理就是作为想要获得代理的一方通过遵守被代理的一方的协议,作为奖励,被代理一方会给代理者一个值,我们在实际应用中可以通过这种方式,从一个界面获取另一个界面的值。
具体如何执行如下:
我们建立第一个视图控制器
"FirstViewController.h”
第一:
在本视图控制器中建立一个label,同时给他一个tag(用来接收奖励的一个身份)
第二:
创建一个button按钮(按钮的方法中引用跳转到b)
secondView.delegete =self;本语句是高速b视图控制器,我要遵守你的协议
第三:
在第一个视图控制器"FirstViewController.h”文件中把第二个视图控制器引入
然后把协议写进去,例如:@interface FirstViewController :UIViewController<ShowButtonDelegate> 也就是拿到协议
我们建立第二个视图控制器,也就是制定协议的一方
"SecondViewController.h"
第一:先声明协议,也就是制定协议
@protocol ShowButtonDelegate <NSObject>
-(void)showButtonTitle:(NSString *)string;
@end
第二:说明什么样的人可以遵守协议
@interface SecondViewController :UIViewController
任何一个满足我协议的都可以用到
@property (nonatomic,assign)id <ShowButtonDelegate>delegete;
@end
第三:在本视图控制器中建立按钮用来作为奖赏提供给其他遵守我协议的人
第四:也就是补充第三步给他提供一个方法
-(void)buttonTapped:(UIButton *)button{
提供给按钮标题的人
if([self.delegeterespondsToSelector:@selector(showButtonTitle:)]){
[self.delegeteshowButtonTitle:button.titleLabel.text];
}
}