是否可以实现可扩展的表头视图?
Posted
技术标签:
【中文标题】是否可以实现可扩展的表头视图?【英文标题】:Is it possible to achieve expandable table header view? 【发布时间】:2020-05-18 12:17:11 【问题描述】:我已经实现了带有可扩展部分的表格视图,即用户选择的部分将具有该特定类别的项目数。对于封闭部分,将有 0 个项目。
现在为了更好的 UI 目的,我想实现以下类型的具有可扩展标题视图的表格视图?在这张图片中,我们可以看到该部分看起来像一个组,其中包含带有圆角和边框的项目。按照默认的UITableView
,这种行为是不可能的。如果有人已经实施,请给出一些建议是否可行。
【问题讨论】:
你不能用部分和行来实现吗? 行总是在节之后开始。就我而言,部分的背景正在扩大。例如,查看“品牌”和“学习技能”标题视图 UI 之间的区别。 那么在这种情况下我会怎么做才能在桌子里面放桌子 那么,如何定义table view的高度? 外层还是内层?你有 2 个正确的数据集 【参考方案1】:struct WrapperObject
var header : HeaderObject
var listObject : [ObjectDetail]
struct HeaderObject
var id : String
var isOpen : Bool
struct ObjectDetail
var id : String
var detailInfo : String
在您的 VC 或数据源中。创造 :
private var internalData : [WrapperObject]
设置数据后,在UITableView的delegate中
extension ViewController : UITableViewDelegate
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
// TODO : Custom your own view
// have a callback to set property isOpen = true or false to the internalData.
return UIView()
extension ViewController : UITableViewDataSource
func numberOfSections(in tableView: UITableView) -> Int
return internalData.count
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if internalData[section].header.isOpen
return internalData[section].listObject.count
else
return 0
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
return UITableViewCell() // TODO: custom your own cell
【讨论】:
是的,我明白你的问题。我只是为您的 tableView 创建一个示例模型以适应。好的,我已经更新了更多细节。 没错,但在我的情况下,UI 是唯一的问题。查看有问题的图像,其中标题视图 ID 在打开时会有所不同。它包含所有行,例如分组,这与实现简单的展开和折叠完全不同。 所以你的问题是每个部分的边框或会话标题的 UI。您的意思是 + 或 - 图标? 部分边框。看看Learning Skills
。标题视图的行为类似于所有行的父视图。
好的,我明白了,很抱歉造成误解。在这种情况下,如果学习技能真的是一个标题,我认为您需要在该标题内创建一个表格视图。如果学习技能不像标题(总是顶部)看起来像那个单元格包含一个迷你表格视图以上是关于是否可以实现可扩展的表头视图?的主要内容,如果未能解决你的问题,请参考以下文章