iOS 常用的反向传值协议的使用

来源:互联网 发布:网络监测软件 编辑:程序博客网 时间:2024/06/05 07:01

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 ([_delegaterespondsToSelector:@selector(chanageLabelText:longitude: Latitude:)]) {

        [_delegatechanageLabelText:[NSStringstringWithFormat:@"%@",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=[[AddressSeacherControlleralloc]init];

    address.delegate =self;//然后该类与当前类签订协议

    [self.navigationControllerpushViewController:addressanimated:YES];

}


- (void)chanageLabelText:(NSString *)address longitude:(NSString*)Longitude Latitude:(NSString*)latitude{//签订协议,就必须遵守协议的方法

//这三个就是获取该内容的值  

    self.detailAdressTeField.text = address;

    longitude=Longitude;

    Latitude =latitude;

}




0 0
原创粉丝点击