iOS中正向、逆向传值的方法总结

2020-01-21 07:04:23王旭


// 移除观察者
- (void)dealloc
{
 [[NSNotificationCenter defaultCenter] removeObserver:self];
}

方式三、单例

1、定义一个单例并声明一个属性(传递值用)。

2、在控制器 Two 给单例属性赋值 。

3、在控制器 One 中利用单例的属性取出值。

第1步

TestSingleton.h


#import <Foundation/Foundation.h>

@interface TestSingleton : NSObject

/** 构造方法,返回单例对象 */
+ (instancetype)shareInstance;
/** 用于传递值 */
@property (strong, nonatomic) NSString *values;

@end

TestSingleton.m


#import "TestSingleton.h"

@implementation TestSingleton

static TestSingleton *_instance = nil;

+ (instancetype)shareInstance
{
 static dispatch_once_t onceToken ;
 dispatch_once(&onceToken, ^{
  _instance = [[self alloc] init] ;
 }) ;
 
 return _instance ;
}

@end

第2步


- (void)navBack:(UIButton *)backBtn
{
 /** 生成单例并赋值 */
 TestSingleton *singleton = [TestSingleton shareInstance];
 singleton.values = @"I'm from twoVC";
 
 [self.navigationController popViewControllerAnimated:YES];
}

第3步


- (void)viewWillAppear:(BOOL)animated
{
 [super viewWillAppear:animated];
 /** 生成单例并取出值 */
 TestSingleton *singleton = [TestSingleton shareInstance];
 _oneTextF.text = singleton.values;
}

方式四、block