属性传值 和 代理传值
两个controller页面相互传值
1. Rootcontroller >> Textcontroller传值 用属性传值
2. Textcontroller >> Rootcontroller传值 用代理传值
1. 属性传值
在Textcontroller 中设置两个用来传值的属性
@property(nonatomic,retain)NSString *labelstring;
@property(nonatomic,retain)NSString *textstring;
相当于去Rootcontroller里面那东西
Rootcontroller的点击事件里 赋值
-(void)buttonAction:(UIButton *)sender
{
FirstViewController *fir=[[FirstViewController alloc]init];
[self.navigationController pushViewController:fir animated:YES];
//属性传值
fir.labelstring=self.root.label.text;
fir.textstring=self.root.text.text;
//设置代理(代理传值时用)
fir.delegate=self;
}
然后 在Textcontroller的viewdidload里面给自己赋值
self.first.text.text=self.textstring;
self.first.label.text=self.labelstring;
2.代理传值
1.建一个PassValueDelegate的代理类
写一个方法,参数就是用来传值的,
-(void)PassValueWithLabelString:(NSString *)labelstring
textstring:(NSString *)textstring;
2. 在Textcontroller里面把代理声明成属性
//声明代理
@property(nonatomic,assign)id<PassValueDelegate>delegate;
在的点击事件里 Textcontroller 调用方法
-(void)buttonAction:(UIButton *)sender
{
[self.navigationController popViewControllerAnimated:YES];
//调用方法 把值传给代理
[self.delegate PassValueWithLabelString:self.first.label.text textstring:self.first.text.text];
}
3. 在上面属性传值的点击方法里 把root设置为text的代理,然后在root里实现代理方法的时候进行传值
-(void)PassValueWithLabelString:(NSString *)labelstring
textstring:(NSString *)textstring
{
//代理的值传给root的属性
self.root.label.text=labelstring;
self.root.text.text=textstring;
}