原文地址:https://blog.csdn.net/iotjin/article/details/49681595
第一个界面 A ,第二个界面B ,从 B 传值 给A
B界面.h
#import <UIKit/UIKit.h>
//第一步 写协议
@protocol passValueDelegate <NSObject>
- (void)passValue:(NSString *)stringValues;
@end
@interface B : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *value2TextField;
//第二步,声明协议的delegate 属性 代理通常用assingn
@property(nonatomic,assign)id<passValueDelegate>delegate;
@end
/** ---------------------------------------------------------------------------*/
B 界面的 .m//成功跳转上一界面
[_delegate passValue:self.valueTextField.text];// 代理执行方法必须写在pop之前
NSLog(@" valueTextField %@ ",self.valueTextField.text);
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];
// [self.navigationController popToRootViewControllerAnimated:YES];
/** ---------------------------------------------------------------------------*/
// 刷新cell的 A *a= [[A alloc]init];
// a.tableView.delegate=self;
// [a.tableView reloadData];
/** ---------------------------------------------------------------------------*/
A.m
#import "B.h"
@interface A () <passValueDelegate>
{
//接收从第2个界面返回的数据
NSString* _value;
}
@property(nonatomic,strong)B *b;
@end
- (void)viewDidLoad {
[super viewDidLoad];
// //为了接收从子界面返回的数据
_b = [[b alloc]init];
_b.delegate =self;
// [self.tableView reloadData];
}
#pragma mark - 从第二个界面返回的数据
- (void)passValue:(NSString *)stringValues
{
[self.tableView reloadData];
_value = stringValues;
NSLog(@" value %@ ",_value);
}