2015-06-04 90 views
1

我有一个名为LoginWindowViewController.h视图控制器,宣布了一个名为usernameTextField属性:Xcode的属性不保留价值

@property (strong, nonatomic) IBOutlet UITextField *usernameTextField; 

叫詹姆斯的字符串被关联到这个文本字段。 然后,我将另一个视图控制器FirstViewController.h导入到我的LoginWindowViewController.m中,并且还将LoginWindowViewController.h导入到FirstViewController.m中。在我的FirstViewController.h中有一个名为username的属性。

@property (strong, nonatomic) IBOutlet NSString *userName; 

然后我分配usernameTextField到用户名(在我的FirstViewController.m)。但是,当我NSLog属性的用户名在我的FirstViewController.m,它给出了一个空值。我该如何解决这个问题?

+1

财产为什么NSString'是'IBOutlet'?再加上目前还不清楚“进口”的事情。你什么时候登录?你如何准确记录? “IBOutlet”不应该“弱”吗? – Larme

+0

它不应该是一个IBOutlet可以从其他.m文件访问吗? –

+0

我用#import“头文件”来导入。 –

回答

1

当您导入类时,您并不实际导入任何值。当你设置一个属性的值时,它只在该类的实例上设置。您将需要明确引用当前实例的属性以获取您设置的值。

一注:IBOutlet代表Interface Builder Outlet,并且是如何创建从故事板或xib文件UI元素到类属性的链接。因此,如果您没有链接到界面构建器中的某些内容,则无需使用IBOutlet。

字符串应该声明

@property (nonatomic, strong) NSString *userName; 

然后,当你从实例化第一个视图控制器登录视图控制器,你可以这样设置

LoginWindowViewController *loginVC = [[LoginWindowViewController alloc] init]; 
[loginVC.usernameTextField setText:self.userName];