2012-12-21 87 views
0

這是這種情況的簡要總結:UITableView通知UITableViewCell關於重新加載

我有一個TableViewController與一些單元格。 在其中一個單元格中,我有一個UITextField。這個單元格是一個自定義的UITableViewCell類。此類實現UITextFieldDelegate協議和方法textFieldDidEndEditing: 在方法textFieldDidEndEditing:中,我將TextField的值存儲到CoreData中。

這一切都很好。

我的問題涉及重新加載的TableView:通過調用[self.tableView reloadData] 如果,當我把這種方法中,上面提到的TextField是第一響應,所述

我重新加載的UITableView的數據的用戶的特定動作後將調用textFieldDidEndEditing:方法,導致我的CoreData相關代碼執行。

當TableView被重新加載時,我不希望自定義TabelViewCell做任何事情。 有沒有辦法,TableViewCell可以知道被重載的TableView?所以我可以在textFieldDidEndEditing:方法中檢查這個嗎?

在我在下面的方式解決它同時:

當創建這個TableViewCell我讓視圖控制器存儲對它的引用。 在致電[self.tableView reloadData]之前,我先通過設置一個自定義屬性_cell.tableWillReload = YES 告知單元格我將在textFieldDidEndEditing:方法中檢查此屬性。

我在想也許有一個不同的,更默認的方式,讓TableViewCells知道他們aroundTableView正在重新加載?

回答

0

試試這個: -

[yourTextFieldOfCell resignFirstResponder]; 

調用[self.tableView reloadData];

+0

感謝您的評論之前。調用'resignFirstResponder'將導致調用'textFieldDidEndEditing'。結果仍然是一樣的。我不希望'textFieldDidEndEditing'中的代碼被執行。 – Brabbeldas