2015-11-05 57 views
1

我有兩個ViewControllers,X和Y,它們都包含UITextFields。從X開始,我在字段中輸入一些文本,然後切換到Y並在字段中輸入一些文本。回到X,我輸入的文本仍然存在,而再次返回Y顯示文本已經消失。在所有視圖之間切換時,如何在TextFields中保留文本?在UITextField中保留文本的視圖

+0

你使用navigationcontroller?或者如何從X切換到Y? –

+0

@AndreSlotta是的我正在使用NavigationController – mjr

+0

,你如何從X到Y?你是否在故事板中創建了一個segue?或者你是否以編程方式做到這一點? –

回答

1

一種可能性:刪除故事板的塞格斯和實施這樣的事情...

class FirstViewController: UIViewController { 
    lazy var secondVC: SecondViewController = { 
    let vc = self.storyboard?.instantiateViewControllerWithIdentifier("SecondVC") as! SecondViewController 
    return vc 
    }() 

    @IBAction func buttonTapped(sender: UIButton) { 
    navigationController?.pushViewController(secondVC, animated: true) 
    } 
} 
1

這是因爲,當你從X到Y時,Y實例被創建,並且(我猜)被推到stack UINavigationController。當你按下返回按鈕時,Y實例被取消分配,X再次出現。 X實例與首次創建的X實例相同。當你再次回到Y時,它將從頭開始重新創建,作爲一個新實例。

可能的解決方案:

  • 保持該字段的值在「根」視圖控制器作爲自定義對象,或字典並且通過它周圍呈現VCS在prepareForSegue即。我的意思是控制器呈現第一頁的形式或只是第一頁vc - 取決於您的需求
  • 將它們存儲在用戶默認值中在每個vc中訪問
  • 將它們保存在您可以訪問的某個單例對象中每個控制器
+0

當然,這是有道理的。現在我必須找到一種方法來保持Y – mjr

+0

的原始實例是否只需要X和Y?還是有更多的控制器要推? –

+0

@mjr - 不要保留整個Y視圖控制器 - 你只需要textField的文本,這是簡單的字符串 – Kubba