是否可以实现可扩展的表头视图?

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。标题视图的行为类似于所有行的父视图。 好的,我明白了,很抱歉造成误解。在这种情况下,如果学习技能真的是一个标题,我认为您需要在该标题内创建一个表格视图。如果学习技能不像标题(总是顶部)看起来像那个单元格包含一个迷你表格视图

以上是关于是否可以实现可扩展的表头视图?的主要内容,如果未能解决你的问题,请参考以下文章

创建一个可扩展的 iOS 视图

子类化 Flask 可插拔视图以实现可扩展功能的最佳方式

是否可以使用自定义模板创建可扩展的UI网格作为Ul li显示

可扩展列表视图默认选择

一个可扩展列表视图中有 2 个不同的列表视图

可扩展列表视图回收问题