1

我有一个带有变量的控制器

NSString *str;

在同一个控制器中,我userId在字符串中分配str

我需要userId在另一个控制器中显示用户数据。

userId我应该如何在另一个控制器中获得价值?

下面是我的代码:

主视图控制器.h

@property (nonatomatic) NSString *str;

主视图控制器.m

@synthesize str;

str = 1;

现在在 FirstViewController.h

@property(nonatomatic, retain) MainViewController *mainCon;

第一视图控制器.m

@synthesize mainCon;

NSLog(@"user id is %@", mainCon.str);

在日志中我得到空值。

4

4 回答 4

2

您最好的选择是 [prepareForSegue] 方法

在那种方法中,我通常有类似的东西

if ([segue.identifier isEqualToString@"segueName"]){
    //I use this if statement to check which segue I am performing, if I have multiple
    //segues from a single view controller
    FirstVc *newViewController = segue.destinationViewController;
    newViewController.str = self.str;
}

这会将字符串从您的主 VC 传递到您的新 VC。这一切都假设您的转换是在 Interface Builder 中布置的,或者以某种方式让您可以访问 segues 和标识符

于 2012-12-26T14:27:23.297 回答
0

在 MainVC 中获取一个属性并从 FirstVC 传递值,然后它将为您工作。

以下代码必须在 MainVC 中

@property (strong, nonatomic) NSString *str; 
@synthesize str;

在FirstVC

MainVC * vc = [[MainVC alloc]init];
vc.str = @"test";
于 2012-12-26T14:05:54.777 回答
0

第1步:

您必须创建一个viewcontroller 类作为常量

第2步:

您可以删除常量类中的.m文件

第三步:

您必须在Projectname_Prefix.pch中导入Constants.h ,这将是 xcode 在其他资源文件夹中的。现在,常量类将充当全局类。

第4步:

现在,您可以在Constants.h中声明变量。在Constants.h中声明的变量将充当全局变量。您可以在任何地方访问它。

于 2012-12-26T14:22:37.640 回答
0
SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
secondViewController.str1 = str;
[self.navigationController pushViewController:secondViewController animated:YES];

这是一个更快更简单的解决方案。

于 2013-11-19T06:08:33.257 回答