1.首先我们要做的就是创建一个协议,在.h文件中创建协议
// 红色部分是协议的名字
@protocol chanageLabelTextDelete <NSObject>
// 这是协议的方法
- (void)chanageLabelText:(NSString *)address longitude:(NSString*)Longitude Latitude:(NSString*)latitude;
@end
@interface AddressSeacherController :UIViewController
@property (assign,nonatomic,readwrite)id <chanageLabelTextDelete>delegate;// 创建协议的属性,全局使用
@end
2.我们要在AddressSeacherController.m文件实现传值
我们可以在点击事件中实现协议的方法
//点击cell执行的事件
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
BaiDuPlaceModel *model =self.datasource[indexPath.row];
if ([_delegate respondsToSelector:@selector(chanageLabelText:longitude: Latitude:)]) {
[_delegate chanageLabelText:[NSString stringWithFormat:@"%@",model._name]
longitude:model._longitude
Latitude:model._latitude];
}
[self.navigationControllerpopViewControllerAnimated:YES];
}
3.结下我们要想从另一个类中获取协议方法所传的值,我们就必须遵守这个协议
#import "bookingPracticeViewController.h"
#import "AddressSeacherController.h"
@interfacebookingPracticeViewController ()<chanageLabelTextDelete>//<>里面便是协议的名字
- (IBAction)customerAdress:(UIButton*)sender {//创建该协议类的对象,然后该类的鞋
AddressSeacherController *address=[[AddressSeacherController alloc]init];
address.delegate =self;//然后该类与当前类签订协议
[self.navigationController pushViewController:address animated:YES];
}
- (void)chanageLabelText:(NSString *)address longitude:(NSString*)Longitude Latitude:(NSString*)latitude{//签订协议,就必须遵守协议的方法
//这三个就是获取该内容的值
self.detailAdressTeField.text = address;
longitude=Longitude;
Latitude =latitude;
}
![](https://i-blog.csdnimg.cn/blog_migrate/7dc87cd12fc3872967feb80340a61fbf.png)