2011-07-06 91 views
0

我堅持從一個ViewController傳遞數據到另一個。該方案是: 我有2個ViewControllers命名爲:SearchDomainController和LoginViewController。我想要做的是將SearchDomainController的字符串值傳遞給LoginViewController中的UITExtfield。傳遞數據到ViewControllers之間的UITextField

在LoginViewController中,我聲明瞭IBOutlet UITextField *domainField;並且還有一個屬性@property(nonatomic,retain) UITextField *domainField

問題是,當我在SearchDomainController中創建LoginViewController的新實例並嘗試使用_loginViewController.domainField.text = @"Some text"; 時,文本在LoginViewController上的UItextField中永遠不會改變。 我錯過了什麼?什麼是這種問題的最佳解決方案? Thanx

回答

1

我的猜測是_loginViewController.domainField當時爲零,這可能是因爲視圖尚未加載,而標籤是在視圖加載時(通過筆尖)而不是視圖加載時創建的控制器對象被創建。

爲了在傳遞值時不依賴於視圖完全加載,我會使用一個單獨的屬性來傳遞標題,即_loginViewController.domainFieldText = @"Some text";。然後在_loginViewControllerviewDidLoad中,將值domaonFieldText分配給實際標籤。

或者,確保UILabel實例已創建,而不是從其他視圖控制器設置其文本時爲零。

+0

我正在考慮使用委託模式來解決這個問題。在SearchViewController中創建一個委託並將值傳遞給LoginViewController。可以這樣解決嗎? – Haris

+0

我不建議在這裏使用委託。代表們主要是在你不能控制的課堂上收到關於內部行爲的通知。不是簡單地傳遞信息,這似乎是你在這裏做的。 –

+0

謝謝你們的幫助。現在問題解決了。 – Haris

0

設置字符串作爲AppDelegate中在一個視圖控制器的property,你可以從另一個檢索它,並將它設置爲textField.text

相關問題