我有一个带有两个窗口的程序(两个窗口都是从同一个类文件控制的)和一个名为PersonName1
,Window A
和Window B
的全局变量。在Window A
上有2个按钮,其中一个是:
-(IBAction)setPersonName:(id)sender
{
PersonName1 = @"Tom";
}
另一个从窗口A变为窗口B
在Window B上有一个按钮:
- (IBAction)loadNames:(id)sender
{
NSLog(@"%@",PersonName1);
}
问题在于屏幕发生变化,当我点击Window B上的按钮时,NSlog返回(null)而不是“Tom”。造成这种情况的原因是什么?
评论的更多信息:
PersonName1
在主ViewController.h文件中声明为:
NSString* PersonName1;
以及该文件中的属性。
@property (nonatomic, retain) NSString *PersonName1;
然后在ViewController.m文件中合成。问题中列出的两个IBAction也都在ViewController.m文件中。
答案 0 :(得分:0)
在我看来,你需要点击第一个窗口上的第一个按钮,为PersonName1分配值。如果您没有单击第一个按钮但是单击了第二个按钮,那么它将返回null,因为只有在您单击第一个按钮时才会发生PersonName1上的声明。
答案 1 :(得分:0)
我认为你没有将值传递给一个视图控制器到另一个视图控制器。
例如: 第一个视图控制器 具有全局值NSString * nameString。 如下所示
@property (nonatomic, strong) NSString *PersonName1;
和 第二个视图控制器 它的全局字符串为NSString * nameString 如下所示
@property (nonatomic, strong) NSString *PersonName1;
当你想将一个视图控制器的值传递给另一个视图控制器时,如下所示
SecoundViewController *SVC = [[SecoundViewController alloc]initWithNibName:@"nibName" bundle:nil];
SVC.PersonName1 = self.PersonName1;
[self.navigationController pushViewController:SVC animated:YES];