如何从具有多个单元格原型的 UITableView 中捕获单元格数据?

Posted

技术标签:

【中文标题】如何从具有多个单元格原型的 UITableView 中捕获单元格数据?【英文标题】:How to capture cell data from UITableView with multiple cell prototypes? 【发布时间】:2019-05-13 02:54:34 【问题描述】:

我设计了一个包含 3 个不同单元格原型的 UITableView。我试图弄清楚如何捕获他们的用户输入。其中一个有一个嵌套表格视图形式的清单,所以我需要他们选择的那些。另一个有一个 UIPickerView,所以我需要从 PickerView 中选择的选项。最后一个是文本区域,所以我需要在其中输入字符串。

因此,当用户向上或向下滚动以使其再次可见时,我不仅需要一种机制来捕获数据并用他们的输入重新填充它。最好的选择是使用以下委托函数来捕获不可见的单元格:

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) 
    // do something with the cell before it gets deallocated

然后在表单提交时捕获可见单元格上的数据?我不确定这种方法是否可行,所以我想知道是否有更好的选择。

表单输入数据将是 1 到第 2 节及以上部分的自重复单元格的多个部分,因此我需要一种方法来捕获所有输入数据,并使用 TableView 使这些单元格出列。

【问题讨论】:

我会考虑使用委托从单元实现更新模型,而不是尝试调用“向下”到单元实现。 听起来你正在创建一个表单来捕获用户输入。您可能要考虑使用Eureka,它是一个非常好的表单库。 @Koh 我已经创建了我的自定义表格视图单元格。我只需要从所有单元格中提取用户输入,但是当您向下滚动时它们会出列,所以我现在主要关心的是从每个单元格中获取用户输入 【参考方案1】:

你的方法是错误的。

当用户在 view 中更改某些内容时,您必须实现一个逻辑来更新数据模型强>。

这可以通过协议/委托或回调闭包来完成。

【讨论】:

那么当用户检查列表中的项目、从选择器中选择以及将文本添加到文本区域时,如何初始化和更新数据模型。 正如我所说,在IBActiontextDidEndEditing 委托方法中调用的协议/委托或回调闭包

以上是关于如何从具有多个单元格原型的 UITableView 中捕获单元格数据?的主要内容,如果未能解决你的问题,请参考以下文章

具有原型单元格、部分的复杂 UITableView

UITableView 中有多个原型单元格?

XCUITest:从具有多个单元格原型的多个单元格标识符中选择一个 CollectionView 单元格

1 个 JSON 键,具有多个值,每个值分隔成 uitableview 单元格

如何在 Xcode 10.0 的 UITableView 中添加原型单元格

如何在原型单元格上使用 UITableView 单元格及其元素