tableView: несколько разделов с разным стилем - PullRequest
0 голосов
/ 04 августа 2020

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

Я хочу прикрепить только заголовок последнего раздела, когда он прокручивается сверху, а не другой разделы.

Есть способ сделать это, пожалуйста, посоветуйте мне ...

Ответы [ 3 ]

1 голос
/ 04 августа 2020

1- Да, ты можешь это сделать. В методе numberOfSections UITableViewDelegate укажите, сколько разделов вы хотите. И в viewForHeaderInSection методе UITableviewDelegate предоставьте индивидуальное представление для каждого раздела.

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

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    
    // Make custom header view for each section
    if section == 0 {
        let header1 = UIView()
        return header1

    } else if section == 1 {
        let header2 = UIView()
        return header2

    } else if section == 2 {
        let header3 = UIView()
        return header3
    }
}

2 - Нет, вы не можете этого сделать. UITableView не позволяет вам указывать, какой именно заголовок должен оставаться наверху, а какой нет.

0 голосов
/ 04 августа 2020

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

Например:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if (indexPath.section == 0 || indexPath.section == 1) && indexPath.row == 0 {
        return HeaderCell()
    }

    // return your desired cells (make sure to handle the number of
    // rows properly as there is effectively 1 more than normal in
    // in the first two sections now)
}

Вам также потребуется настроить заголовки для первых двух разделов:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if section == 2 { return YourHeaderView() }

    return nil
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    if section == 2 { return yourHeight }

    return 0
}

Кроме того, в функции делегата numberOfRows убедитесь, что вы добавили 1 (это будет HeaderCell).

0 голосов
/ 04 августа 2020

Вы можете установить стиль UITableView на Обычный . При прокрутке он будет вставлять весь заголовок раздела.

Я думаю, что невозможно закрепить заголовок конкретного раздела.

...