首先在你需要反向传回来值得界面声明 .h文件
//指定委托协议
@protocol EditDelegate <NSObject>
-(void)editFinish:(EditViewController*)editVC backValue:(NSString*)backValue;
@end
//代理人
@property(nonatomic,weak)id<EditDelegate> delegate;
//用来接收需要传过来修改的值.如果不需要从第一个界面传值过来可以不需要下面这一步
@property(nonatomic,strong)NSString *editTitle;
然后在第一个界面的.M文件里遵守<EditDelegate>协议
@interface NickNameViewController () <EditDelegate>
@property (weak, nonatomic) IBOutlet UILabel *nicknameTitle;
@end
@implementation NickNameViewController
//实现代理方法
-(void)editFinish:(EditViewController *)editVC backValue:(NSString *)backValue {
//通过参数获取传回来的值,并用传回来的值更新label的显示
self.nicknameContent.text = backValue;
}
//跳转到下一个界面
- (IBAction)goEditVC:(id)sender {
EditViewController *editVC = [[EditViewController alloc]initWithNibName:@"EditViewController" bundle:nil];
//把label中的内容, 传入到下个界面,使用下个界面的属性来接受这些内容
editVC.editTitle = self.nicknameTitle.text;
//设置下个界面的代理人 为 自己
editVC.delegate = self;
//跳转界面
[self presentViewController:editVC animated:YES completion:nil];
}
然后在第二个界面的.M文件中
//回到前一个界面,并把修改的值传回去
- (IBAction)saveEditContent:(id)sender {
//把要传回的值 交给代理人
[self.delegate editFinish:self backValue:self.editContentField.text];
//回到前一个界面
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)viewDidLoad {
[super viewDidLoad];
//用前一个界面传入的内容,更新显示
self.editTitleLabel.text = self.editTitle;
}