2012-10-01 13 views
0

我有一個從UITableViewController推到另一個UITableViewController。一個對象通過prepareForSegue傳遞給第二個VC。在第二個VC中存在一個UITextfield來編輯該對象。該對象在第二個VC的textFiedlDidEndEditing委託方法中進行了修改。我只是將[self.tableView reloadData]放置在第一個VC的viewDidAppear方法中,以更新顯示對象的表格,而不是創建委託方法。ViewDidAppear和textFiedlDidEndEditing控制流

當用戶導航回第一個VC時,我需要確保第一個VC中的viewDidAppear只有在第二個VC的textFiedlDidEndEditing完成並設置新對象後纔會被調用。這似乎是以這種方式工作的,但是這是因爲偶然還是因爲viewDidAppear只在之前的VC方法實施之後才被調用?

回答

2

viewDidAppear將在您的第一個視圖重新出現在屏幕上時被調用。我假設你是以編程方式彈出第二個視圖控制器或使用unwind segue。如果是這種情況,請致電

[textField resignFirstResponder]; 

您的第二個VC。

+0

時後退按鈕導航項目在VC中挖掘與文本框我注意到,第一個VC的'viewWillAppear'被前'textFieldDidEndEditing'調用。我想將'reloadData'調用放在'viewWillAppear'中,但是我的對象在被觸發時還沒有被修改。 – mnort9

+0

我想通了,發佈了我的解決方案。謝謝您的幫助。 – mnort9

1

在textfield的VC中,我必須放置下面的代碼,以確保textFieldDidEndEditing在任何其他VC的viewWillAppear方法之前被調用。

[self.view.window endEditing: YES];