我有一个带变量的控制器,如
NSString *str;
在同一个控制器中,我在字符串userId
中分配str
。
我需要在另一个控制器上方userId
以显示用户数据。
我应该如何在另一个控制器中获得userId
的值?
以下是我的代码:
MainViewController.h
@property (nonatomatic) NSString *str;
MainViewController.m
@synthesize str;
str = 1;
现在在FirstViewController.h
@property(nonatomatic, retain) MainViewController *mainCon;
FirstViewController.m
@synthesize mainCon;
NSLog(@"user id is %@", mainCon.str);
在日志中我得到空值。
答案 0 :(得分: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中布局或以某种方式使您可以访问segue和标识符
答案 1 :(得分:0)
在MainVC中获取一个属性并从FirstVC传递值然后它将适合您。
以下代码必须在MainVC
中@property (strong, nonatomic) NSString *str;
@synthesize str;
在FirstVC中
MainVC * vc = [[MainVC alloc]init];
vc.str = @"test";
答案 2 :(得分:0)
<强>步骤1:强>
您必须将 viewcontroller 类创建为常量
第2步:
您可以在 Constanst 类中删除 .m 文件
<强>步骤3:强>
您必须在 Projectname_Prefix.pch 中导入 Constants.h ,这将是其他资源文件夹中的xcode。现在,Constant类将充当全局类。
<强>步骤4:强>
现在,您可以在 Constants.h 中声明变量。在 Constants.h 中声明的变量将充当全局变量。你可以在任何地方访问它。
答案 3 :(得分:0)
SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
secondViewController.str1 = str;
[self.navigationController pushViewController:secondViewController animated:YES];
这是一种更快捷,更轻松的解决方案。