汇总ios开发逆向传值的方法

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开发逆向传值的方法 的全部内容, 来源链接: utcz.com/z/320530.html

回到顶部