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
swift UITableView的。以编程方式将表头添加到表部分
如何在 Swift 中使用搜索栏过滤具有自定义单元格的 UITableView 的内容?