UITableView 通知 UITableViewCell 重新加载
Posted
技术标签:
【中文标题】UITableView 通知 UITableViewCell 重新加载【英文标题】:UITableView inform UITableViewCell about reload 【发布时间】:2012-12-21 10:25:37 【问题描述】:以下是情况的简短摘要:
我有一个带有多个单元格的 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 知道它们周围的TableView 正在重新加载?
【问题讨论】:
【参考方案1】:试试这个:-
[yourTextFieldOfCell resignFirstResponder];
在致电[self.tableView reloadData];
之前
【讨论】:
感谢您的评论。调用resignFirstResponder
会导致调用 textFieldDidEndEditing
。结果还是一样。我不想执行textFieldDidEndEditing
中的代码。以上是关于UITableView 通知 UITableViewCell 重新加载的主要内容,如果未能解决你的问题,请参考以下文章
从 UITableView 调用 UIPopoverController - objective-c
UINavigationController 包含一个 UITableView,然后是一个包含更多 UITableView 的 UITabBarController