设置:该表有一个自定义单元格。此单元格有一个文本框。在每个文本框中输入一个数字。tableView有5行(该单元格)。如果我在任何一个单元格中更改一个数字,那么所有的单元格都需要更新,我只需调用tableView.reloadData()。文本框中的更改由editingDidEnd事件处理。
问题是:我单击任何一个textFields并更改号码。然后,我单击另一个textField来更改它的值。首先调用editingDidEnd,重新计算所有值,调用tableView.reloadData。现在,由于重新加载了表,所以忽略了对第二个textField的单击。
我无法直接更新单元格,因为它们是自定义单元格,并且值在该类中被更改。我无法更新自定义单元格类中的所有单元格。
难以用书面解释的问题,尤指对非英语母语的人来说。如果您理解这个问题,任何提示都将受到赞赏:)。
使用Xcode 7.1和Swift。谢谢。
发布于 2015-11-13 21:21:40
调用reloadData时,所有单元格都从表视图中移除并重新添加。因为它被删除了,所以它不在应答链中,这意味着它的文本字段不能是firstResponder (选中)。
有两种选择是可行的。
跟踪选中的行,然后调用reloadData,然后在文本字段上调用becomeFirstResponder以获得正确的行。
不调用重新加载数据,只更新文本字段中的值。这个选项更多地取决于你的应用程序的条纹。
发布于 2016-03-06 04:08:13
这可能很简单,理想情况下,您可以存储要聚焦的字段的值和所讨论的单元格的索引路径(例如在重新加载后重新生成编辑字段?)
此代码应有助于:
- (void)tableView:(UITableView *)tableView
willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath == self.editingIndexPath)
{
[self.editingTextField becomeFirstResponder];
}
}https://stackoverflow.com/questions/33701832
复制相似问题