0

我有一个程序,它有两个窗口(都由同一个类文件控制)和一个名为PersonName1,Window AWindow B. 上Window A有 2 个按钮,其中一个:

-(IBAction)setPersonName:(id)sender
{
    PersonName1 = @"Tom";
}

另一个从窗口 A 变为窗口 B

在窗口 B 上有一个按钮,它可以:

- (IBAction)loadNames:(id)sender
{
    NSLog(@"%@",PersonName1);
}

问题是每当屏幕发生变化时,当我单击窗口 B 上的按钮时,NSlog 返回(null)而不是"Tom"。这是什么原因造成的?

来自评论的更多信息:

PersonName1在主 ViewController.h 文件中声明如下:

NSString* PersonName1;

以及该文件中的属性。

@property (nonatomic, retain) NSString *PersonName1;

然后在 ViewController.m 文件中合成。问题中列出的两个 IBAction 也都在 ViewController.m 文件中。

4

2 回答 2

0

在我看来,您必须单击第一个窗口上的第一个按钮才能将值分配给 PersonName1。如果您没有单击第一个按钮,而是单击了第二个按钮,那么它将返回 null,因为 PersonName1 上的声明只有在您单击第一个按钮时才会发生。

于 2013-05-17T09:33:11.630 回答
0

我认为您没有将值传递给一个视图控制器到另一个视图控制器。

例如: 第一个视图控制器 的全局值为 NSString *nameString。像下面

@property (nonatomic, strong) NSString *PersonName1;

第二个 视图控制器 具有全局字符串作为 NSString *nameString 如下所示

@property (nonatomic, strong) NSString *PersonName1;

当你想将值传递给一个视图控制器到另一个 mean.do 像下面

 SecoundViewController *SVC = [[SecoundViewController alloc]initWithNibName:@"nibName" bundle:nil]; 
SVC.PersonName1 = self.PersonName1;
 [self.navigationController pushViewController:SVC animated:YES];
于 2013-05-17T10:37:41.313 回答