2015-06-04 125 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];