用代理方法进行视图之间的传值 B视图值传入A视图

转载了一些相关的知识,看得迷迷糊糊,自己理解后进行了整理,与大家分享。


用代理方法进行视图之间的传值  B视图值传入A视图


1、在B视图的.h文件中声明一个协议ChooseCityControllerDelegate,协议名用B视图的名称+Delegate组成

@protocol ChooseCityControllerDelegate <NSObject> 

-(void)CityName:(NSString *)CityName;

@end


2、在B视图的.h文件中设置一个类型为id的属性,这个属性可能是任何类型,所以此处用id。为防止循环引用,此处采用了weak。该属性必须遵循我们声明的协议ChooseCityControllerDelegate

@property (nonatomic,weak)id <ChooseCityControllerDelegate> delegate;


3、在B视图.m文件中页面切换的位置,用自身的代理来执行协议,将需要传给A视图的值作为参数传递。其中[[_cities objectForKey:key] objectAtIndex:indexPath.row]]为要传递的值,也可为一个@“123”,字符串参数,看项目需要什么值。

[self.delegate CityName:[[_cities objectForKey:key] objectAtIndex:indexPath.row]];


4、在B视图.m文件中页面切换的位置,还需要切换页面进行跳转

[self.navigationController popViewControllerAnimated:YES];


5、在A视图的.m文件中引用协议名,ChooseCityControllerDelegate为协议名

@interface GoOutViewController ()<UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate,UIGestureRecognizerDelegate,CLLocationManagerDelegate,ChooseCityControllerDelegate>


6、在A视图的.m文件中实现协议中的方法,把想做的的事情写在其中。此处是将传来的值赋给 _cityLal。

-(void)CityName:(NSString *)CityName{

    _cityLal.text=CityName;

}


7、在A视图的.m文件切换到B试图(receiveVc为B试图)的位置,记得实现B视图的代理方法,即

receiveVc.delegate =self;


8、传值时类型要保持一致,接收的值是Model的就要传Model,是NSString就传NSString。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值