首页 > 系统 > iOS > 正文

总结ios之逆向传值的方法

2020-02-19 15:51:51
字体:
来源:转载
供稿:网友

在iOS开发中,有几种常见的逆向值传递方法,下面是武林技术频道小编总结ios之逆向传值的方法,感兴趣的小伙伴们可以一起进入下文参考一下!

第一种:代理传值
第二个控制器:

@protocol WJSecondViewControllerDelegate - (void)changeText:(NSString*)text;@end @property(nonatomic,assign)iddelegate;- (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];}

以上就是总结ios之逆向传值的方法,更多内容请继续关注武林技术频道其它相关文章!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表