汇总ios开发逆向传值的方法
汇总ios开发逆向传值的方法
发布时间:2016-12-28 来源:查字典编辑
摘要:iOS的逆向传值有很多种方法,下面来总结几种常用的传值方式(只贴相关代码):第一种:代理传值第二个控制器:@protocolWJSecond...

iOS的逆向传值有很多种方法,下面来总结几种常用的传值方式(只贴相关代码):

第一种:代理传值

第二个控制器:

@protocol WJSecondViewControllerDelegate <NSObject> - (void)changeText:(NSString*)text; @end @property(nonatomic,assign)id<WJSecondViewControllerDelegate>delegate; - (IBAction)buttonClick:(UIButton*)sender { _str = sender.titleLabel.text; [self.delegate changeText:sender.titleLabel.text]; [self.navigationController popViewControllerAnimated:YES]; }

第一个控制器:

- (IBAction)pushToSecond:(id)sender { WJSecondViewController *svc = [[WJSecondViewController alloc]initWithNibName:@"WJSecondViewController" bundle:nil]; svc.delegate = self; svc.str = self.navigationItem.title; [self.navigationController pushViewController:svc animated:YES]; [svc release]; } - (void)changeText:(NSString *)text{ self.navigationItem.title = text; }

第二种:通知传值

第一个控制器:

//注册监听通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(limitDataForModel:) name:@"NOV" object:nil]; - (void)limitDataForModel:(NSNotification *)noti{ self.gamesInfoArray = noti.object; }

第二个控制器:

//发送通知 [[NSNotificationCenter defaultCenter] postNotificationName:@"NOV" object:gameArray];

第三种:单例传值

Single是一个单例类,并且有一个字符串类型的属性titleName

在第二个控制器:

- (IBAction)buttonClick:(UIButton*)sender { Single *single = [Single sharedSingle]; single.titleName = sender.titleLabel.text; [self.navigationController popViewControllerAnimated:YES]; }

第一个控制器:

- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; Single *single = [Single sharedSingle]; self.navigationItem.title = single.titleName; }

第四种:block传值

第二个控制器:

@property (nonatomic,copy) void (^changeText_block)(NSString*); - (IBAction)buttonClick:(UIButton*)sender { _str = sender.titleLabel.text; self.changeText_block(sender.titleLabel.text); [self.navigationController popViewControllerAnimated:YES]; }

第一个控制器:

- (IBAction)pushToSecond:(id)sender { WJSecondViewController *svc = [[WJSecondViewController alloc]initWithNibName:@"WJSecondViewController" bundle:nil]; svc.str = self.navigationItem.title; [svc setChangeText_block:^(NSString *str) { >self.navigationItem.title = str; }]; [self.navigationController pushViewController:svc animated:YES]; }

第五种:extern传值

第二个控制器:

extern NSString *btn; - (IBAction)buttonClick:(UIButton*)sender { btn = sender.titleLabel.text; [self.navigationController popViewControllerAnimated:YES]; }

第一个控制器:

NSString *btn = nil; - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; self.navigationItem.title = btn; }

第六种:KVO传值

第一个控制器:

- (void)viewDidLoad { [super viewDidLoad]; _vc =[[SecondViewController alloc]init]; //self监听vc里的textValue属性 [_vc addObserver:self forKeyPath:@"textValue" options:0 context:nil]; }

第二个控制器:

- (IBAction)buttonClicked:(id)sender { self.textValue = self.textField.text; [self.navigationController popViewControllerAnimated:YES]; }

其实还有很多种传值方式,比如说NSUserDefaults,先把数据保持在本地,再读取,或者写入plist及其它类型的文件再读取等等许多方式,在这里就不一一列举了!这些代码写的时间比较久了,今天整理了一下,还比较乱,有什么不对或不足的地方请见谅!

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新IOS开发学习
热门IOS开发学习
编程开发子分类