Tableview具有一个浮动标题的多个部分

时间:2019-06-12 00:38:58

标签: ios swift tableview

我想用部分来实现表,但是我只希望一个部分具有标题,而对于所有部分,单个标题应显示为浮动。

有人对此有解决方案吗,请帮助我。

2 个答案:

答案 0 :(得分:2)

我同意 SuperDuperTango 在这种情况下仅使用一个部分。转换分段数据源的一种简单方法是:

struct Section {
    let title: String
    let rows: [Row]
}

struct Row {
    let title: String
}

class TableViewController: UITableViewController {

    // original data source
    let sections: [Section] = {
        var sections = [Section]()

        for section in ["A", "B", "C", "D", "E"] {
            let numberOfRows = 1...Int.random(in: 1...5)
            let rows = numberOfRows.map { Row(title: "Section \(section), Row \($0)") }
            let section = Section(title: "Section \(section)", rows: rows)
            sections.append(section)
        }

        return sections
    }()

    // transformed data source
    var allRows: [Row] {
        return sections.reduce([], { $0 + $1.rows })
    }

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

    override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        return "Your section title"
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return allRows.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        cell.textLabel?.text = allRows[indexPath.row].title
        return cell
    }

}

答案 1 :(得分:0)

如果我对您的理解正确,则可以尝试创建一个具有单个节的UITableView(具有您要查找的浮动标头)。缺点是您需要管理indexPaths,这很痛苦。

例如,如果您有3个“节”,则每个节有4个元素,那么在tableView的“节0”(IndexPath.section == 0)中,您将有12行(如果您有3行,想要非浮动的“标题单元格”(这只是标准的UITableViewCells。