ios - 将值从一个ViewController传递给Objective-C中的另一个

标签 ios objective-c

我对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/

相关文章:

ios - 如何在 XIB 中正确加载和显示自定义 UIView?

objective-c - 鼠标悬停在 NSPanel 的 WebView 中无法使用 NSNonactivatingPanelMask 的 styleMask

objective-c - 子类化 NSDictionary 不起作用

ios - 带有 Swift 3 的 APAddressBook - EXC_ARM_BREAKPOINT

ios - 从 Swift 的 Objective-c 基础 View Controller 继承

ios - Stripe SCA 需要处理下一步操作

Java iOS MDM : APNs Certificate UID changes

ios - 两个物体之间的碰撞

ios - 快速用户通知 : why is nextTriggerDate nil?

iOS autoLayout View 未显示在屏幕上?