代理传值的步骤:
需要传值的界面操作步骤:
1.声明代理协议
2.声明代理方法
3.声明一个属性,用来表示当前类对象的代理
4.让代理执行对象的方法,实现界面间从下级界面到上级界面的通讯
接收传值的界面操作步骤:
1.遵循代理协议
2.指定当前的控制器为传值界面控制器的代理
3.实现代理方法
需要传值的界面-SecondViewController
#import <UIKit/UIKit.h>
// 1.声明协议进行传值
@protocol SecondVCDelegate
// 2.通过该协议方法更改上个界面中label.text
- (void)changeLabelText:(NSString*)aString;
@end
@interface SecondViewController :UIViewController
// 3.声明一个属性,用来表示当前类对象的代理
@property(nonatomic,assign) id<SecondVCDelegate> delegate;
@end
- (void)popToFirstVC:(UIButton*)sender
{
[self.navigationController popViewControllerAnimated:YES];
// 4.让代理执行对象的方法,实现界面间从下级界面到上级界面的通讯
if([_delegaterespondsToSelector:@selector(changeLabelText:)]) {
[_delegate changeLabelText:self.textField.text];
}
}
接收传值的界面-FirstViewController
#import "FirstViewController.h"
#import" SecondViewController.h"
//1.遵循代理协议
@interface FirstViewController() <SecondVCDelegate>
- (void)pushToNextVC:(UIButton*)sender
{
SecondViewController*secondVC = [[SecondViewController alloc]init];
secondVC.labelText=self.label.text;
// 2.指定当前的控制器为secondVC的代理
secondVC.delegate=self;
[self.navigationController pushViewController:secondVCanimated:YES];
}
// 3.实现代理方法
#pragma mark - SecondVCDelegate
- (void)changeLabelText:(NSString*)aString
{
self.label.text= aString;
}