如何更新 UITableView 以便单元格中的 UITextField 不会失去焦点

oya*_*lhi 5 uitableview ios swift

设置:表格有 1 个自定义单元格。该单元格有 1 个文本框。在每个文本框中输入一个数字。tableView 有 5 行(该单元格)。如果我更改任何单元格中的一个数字,则所有单元格都需要更新,我只需调用tableView.reloadData(). 文本框中的更改由事件处理editingDidEnd

问题:我单击任何文本字段并更改数字。然后,我单击另一个文本字段来更改其值。首先editingDidEnd被调用,所有值被重新计算,并被tableView.reloadData调用。现在,由于重新加载表格,因此错过了对第二个文本字段的单击。

我无法直接更新单元格,因为它们是自定义单元格,并且值在该类中发生了更改。我无法更新自定义单元类中的所有单元。

这是一个很难以书面形式解释的问题,特别是对于非英语母语人士来说。如果您理解这个问题,任何指示都将不胜感激:)。

使用 Xcode 7.1 和 Swift。谢谢。

Cra*_*ens 4

当您调用 时reloadData,所有单元格都会从表格视图中删除并重新添加。由于它被删除,它不再位于响应者链中,这意味着它的文本字段不能是第一个响应者(选定的)。


有两种可行的选择。

跟踪所选的行,调用reloadData然后调用becomeFirstResponder正确行的文本字段。

不调用重新加载数据,仅更新文本字段中的值。此选项更多地取决于您的应用程序的条纹。