這是這種情況的簡要總結: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正在重新加載?
感謝您的評論之前。調用'resignFirstResponder'將導致調用'textFieldDidEndEditing'。結果仍然是一樣的。我不希望'textFieldDidEndEditing'中的代碼被執行。 – Brabbeldas