我对Objective-C编程并不陌生。我目前忍受的一件事是将值从第一个ViewController
传递到下一个。
我读过this entry here,但对我没有帮助。这很有趣,因为他的回答接近500票,所以我一定是问题所在。我所做的是以下几点。
我打开了PreviewViewController.m
并添加了以下一行#import "MainViewController.h"
,因为我想将PreviewViewController
中的值传递给`MainViewController。然后,当我切换布局(成功运行)时,我想传递一个值。
MainViewController *mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
mainViewController.userId = @"539897197";
如您所见,我想传递userId。为此,我还在
MainViewController.h
中创建了一个属性@property ( nonatomic, strong ) NSString *userId;
现在,在我的
MainViewController.m
中,我想访问userId。但是,当我登录时,控制台告诉我它是null
。但是,当我在NSLog
之前设置变量时,它可以工作,因此似乎传递是问题所在。另外在
MainViewController.m
中,我有以下行@synthesize userId = _userId;
但是,即使我删除了该行并将
NSLog
更改为NSLog(@"%@",self.userId);
,也发生了相同的问题。如何成功传递变量?我哪一步做错了?
编辑
这就是我切换布局的方式
UIViewController *viewController = [[MainViewController alloc]init];
MainViewController *mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
mainViewController.userId = @"539897197";
[self presentViewController:viewController animated:YES completion:NULL];
最佳答案
为什么不创建自定义初始化程序并以这种方式传递它呢?就像是
- (id)initWithUserId:(NSString *)aUserId {
self = [super initWithNibName:@"MainViewController" bundle:nil];
if (self) {
self.userId = aUserId
}
return self;
}
然后,您可以执行以下操作:
MainViewController *mvc = [[MainViewController alloc] initWithUserId:@"1234"]
[self presentViewController:mvc animated:YES completion:nil];
关于ios - 将值从一个ViewController传递给Objective-C中的另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20267387/