Swift UITableView(无部分)过滤到带有部分的表格视图

Posted

技术标签:

【中文标题】Swift UITableView(无部分)过滤到带有部分的表格视图【英文标题】:Swift UITableView (no sections) filter to table view with sections 【发布时间】:2018-09-30 19:16:22 【问题描述】:

我在表格视图中显示了一个自定义对象 [物种] 的列表,该列表按字母顺序排序。表格有一个没有标题的部分,它是一个连续的列表。

我想要实现的是,当用户选择“按国家”对数据进行排序的选项时,执行以下操作:

对数组进行排序以找出我需要多少个部分 - “Species.country” 创建带有国家标题的部分 按字母顺序对国家(部分)进行排序 重新加载表格视图以显示部分 删除反向操作的部分(对整个列表 A-Z 排序)

过滤/排序时是否可以动态创建部分?你能给我指出正确的方向吗?非常感谢 A.

func numberOfSections(in tableView: UITableView) -> Int 
    return 1


func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
    return 120


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return self.genusArr.count


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell: CustomMenuCell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomMenuCell

    //genusArr is type of [Species]
    let genus = self.genusArr[indexPath.row]
    cell.populate(with: genus)

    return cell

【问题讨论】:

请展示您已经尝试过的内容、无效的内容、代码示例等。请阅读How to Ask 和minimal reproducible example 然后edit 您的问题显示最小值 演示问题的代码。 您在一篇帖子中有太多问题。这太难回答了。 【参考方案1】:

这一切都在您的数据模型中。您总是有带有行的部分。但是你只有一个部分。修改您的数据模型和数据源方法以始终支持多个部分。只是有时这个数据模型只有一个部分。

将您的数据模型更新为字典数组,其中字典包含标题和数组。***数组是您的部分(有时可能只是一个)。内部数组(在每个字典中)是每个部分的行。或者使用标题和数组定义 struct,而不是使用字典。

有了这个,并且您的表视图数据源和委托方法编写为始终适用于多个部分,当您碰巧只有一个部分的数据时,您的表也可以正常工作。

现在只需根据您希望如何组织数据以进行显示,根据需要填充您的字典数组。

【讨论】:

这是一个想法。我将试一试,并将创建默认支持多个部分的表格视图,然后我将在已过滤数据的单独数组中创建字典,然后在这两个数组之间交换数据源。谢谢,我会更新回来?? 正如@rmaddy 所说,这完全取决于您的genusArr,它必须支持多部分,例如var genusArr: [(country: String, species: [genus])] 并在genus.count == 1 上测试以了解您是否需要显示部分标题【参考方案2】:

回答章节标题的问题。您可以尝试使用:

tableView(_ tableView: UITableView, titleForHeaderInSection section: Int)

tableView(tableView: UITableView, viewForHeaderInSection section: Int)

【讨论】:

以上是关于Swift UITableView(无部分)过滤到带有部分的表格视图的主要内容,如果未能解决你的问题,请参考以下文章

过滤一个 Json 填充的 UITableView Swift 2

过滤 UItableview Swift IOS

swift UITableView的。以编程方式将表头添加到表部分

如何在 Swift 中使用搜索栏过滤具有自定义单元格的 UITableView 的内容?

将 SearchBar 添加到 uitableview 在过滤过程中遇到错误

searchDisplayController、UITableView、Core Data 和 Swift