iOS经验总结

ios开发逆向传值的几种方法整理

2019-03-26  本文已影响0人  羊妞麻麻

第一种:代理传值

第二个控制器:

@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*);

第一个控制器:
第五种:extern传值

第二个控制器:

extern NSString *btn;

第一个控制器:

NSString *btn = nil;

第六种:KVO传值

第一个控制器:
第二个控制器:

上一篇下一篇

猜你喜欢

热点阅读