一丶单利传值
1.创建继承NSObject的Single文件.h中
//通过类方法创建单利对象
+(instancetype)sharedInstance;
//创建字符串 存值拿值
@property (nonatomic,strong) NSString *Zhi;
.m
+(instancetype)sharedInstance{
//通过静态变量的方式创建变量
static Single *shareVC = nil;
//判断变量是否有值
if(shareVC==nil){
shareVC=[[Single alloc]init];
}
return shareVC;
}
2.在要进行传值的界面中导入头文件Single.h
//通过单例对象反向传值
[Single sharedInstance].Zhi=self.textF.text;
3.在接收值的界面中导入头文件Single.h
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.textF.text=[Single sharedInstance].Zhi;
}
二丶代理传值
1.如果我想把第二界面值传到第一界面在.h中
// 委托方创建一个协议
@protocol passValueDelegate <NSObject>
//创建一个传值方法(字符串)
-(void)passValue:(NSString *)str;
@end
NS_ASSUME_NONNULL_BEGIN
@interface NextViewController : UIViewController
//定一个持有协议的id指针
@property (weak)id<passValueDelegate>delegate;
@end
NS_ASSUME_NONNULL_END
2…m中返回方法中
-(void)Tiaozhuan{
//找到协议里的方法
[self.delegate passValue:self.textF.text];
[self.navigationController popViewControllerAnimated:YES];
}
3.第一个界面中
//签订协议
@interface ViewController ()<passValueDelegate>
//在跳转第二个界面中
#pragma mark 跳转
-(void)Tiaozhuan{
NextViewController *next=[NextViewController new];
//实现代理
next.delegate=self;
[self.navigationController pushViewController:next animated:YES];
}
4.调用方法
//调用协议方法
-(void)passValue:(NSString *)str{
NSLog(@"我看看%@",str);
self.textF.text=str;
}
三丶block传值
1.如果我想把第二界面值传到第一界面在.h中
//创建block对象
@property (copy) void (^block)(NSString *str);
2…m中
//点击按钮返回
-(void)Tiaozhuan{
//通过Block传值
self.block(self.textF.text);
[self.navigationController popViewControllerAnimated:YES];
}
3.在要跳到第二个界面的方法中实现block方法
#pragma mark 跳转
-(void)Tiaozhuan{
NextViewController *next=[NextViewController new];
next.block = ^(NSString *str){
self.textF.text=str;
};
[self.navigationController pushViewController:next animated:YES];
}