【问题标题】:Is it possible to achieve expandable table header view?是否可以实现可扩展的表头视图?
【发布时间】:2020-05-18 12:17:11
【问题描述】:

我已经实现了带有可扩展部分的表格视图,即用户选择的部分将具有该特定类别的项目数。对于封闭部分,将有 0 个项目。

现在为了更好的 UI 目的,我想实现以下类型的具有可扩展标题视图的表格视图?在这张图片中,我们可以看到该部分看起来像一个组,其中包含带有圆角和边框的项目。按照默认的UITableView,这种行为是不可能的。如果有人已经实施,请给出一些建议是否可行。

【问题讨论】:

  • 你不能用部分和行来实现吗?
  • 行总是在节之后开始。就我而言,部分的背景正在扩大。例如,查看“品牌”和“学习技能”标题视图 UI 之间的区别。
  • 那么在这种情况下我会怎么做才能在桌子里面放桌子
  • 那么,如何定义table view的高度?
  • 外层还是内层?你有 2 个正确的数据集

标签: ios swift uitableview uitableviewsectionheader uitableviewautomaticdimension


【解决方案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。标题视图的行为类似于所有行的父视图。
  • 好的,我明白了,很抱歉造成误解。在这种情况下,如果学习技能真的是一个标题,我认为您需要在该标题内创建一个表格视图。如果学习技能不像标题(总是顶部)看起来像那个单元格包含一个迷你表格视图
猜你喜欢
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多