以下是情况的简短摘要:
我有一个包含许多单元格的TableViewController。
在其中一个单元格中,我有一个UITextField。此单元格是自定义UITableViewCell类。此类实现UITextFieldDelegate协议和方法textFieldDidEndEditing:
在方法textFieldDidEndEditing:
中,我将TextField的值存储到CoreData中。
这一切都很有效。
我的问题与重新加载TableView有关:
在用户执行某些操作后,我通过调用[self.tableView reloadData]
重新加载UITableView的数据
如果,当我调用此方法时,上面提到的TextField是第一个响应者,将调用textFieldDidEndEditing:
方法,导致我的CoreData相关代码执行。
重新加载TableView时,我不希望自定义TabelViewCell完全执行任何操作。
有没有办法,TableViewCell可以知道正在重载的TableView?我可以在textFieldDidEndEditing:
方法中检查这个吗?
与此同时,我已通过以下方式解决了这个问题:
当创建这个TableViewCell时,我让ViewController存储对它的引用。
在致电[self.tableView reloadData]
之前,我首先通过设置自定义属性_cell.tableWillReload = YES
来通知Cell
我将在textFieldDidEndEditing:
方法中检查此属性。
我想也许有一种不同的,更默认的方式,TableViewCells知道aroundTableView正在重新加载?
答案 0 :(得分:0)
试试这个: -
[yourTextFieldOfCell resignFirstResponder];
在致电[self.tableView reloadData];