Таблица просмотра нескольких разделов с одним плавающим заголовком - PullRequest
0 голосов
/ 12 июня 2019

Я хотел реализовать таблицу с разделами, но я хотел, чтобы только один раздел имел заголовок, и для всех разделов этот отдельный заголовок должен отображаться как плавающий.

У кого-нибудь есть решение для этого, пожалуйста, помогите мне.

Ответы [ 2 ]

2 голосов
/ 12 июня 2019

Я согласен с 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
    }

}
0 голосов
/ 12 июня 2019

Если я вас правильно понимаю, вы можете попробовать создать UITableView с одним разделом (с плавающим заголовком, который вы ищете).Недостатком этого является то, что вам нужно управлять своими indexPaths, что является своего рода болью.

Например, если у вас есть 3 «раздела», каждый раздел имеет 4 элемента, а затем в «Разделе 0»."вашего tableView (IndexPath.section == 0), у вас будет 12 строк (возможно, еще 3, если вы хотите не плавающие" ячейки заголовка "(которые будут просто стандартными UITableViewCells.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...