Почему разделительные вставки не соблюдаются для первой и последней ячейки в сгруппированном разделе? - PullRequest
1 голос
/ 29 января 2020

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

enter image description here

Моя раскадровка настроена так, что у меня есть UIViewController, который содержит контейнер UIView, который, в свою очередь, имеет встроенный переход для UITableView. В моем табличном представлении указана ячейка-прототип, и в раскадровке я установил сгруппированный стиль «Разделитель по умолчанию» со вставкой Automati c.

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

В моем контроллере табличного представления я реализовал следующие два метода:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "ItemHeader") as! TableSectionHeaderViewCell
    header.title.text = "My Custom Date Header"
    return header
}

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 60.0
}

В отдельном файле я поместил UITableViewHeaderFooterView в подкласс, чтобы просто установить шрифт, цвет текста и некоторые ограничения.

Теперь, если я установил настраиваемую вставку разделителя на раскадровке на уровне табличного представления с 26 вставками слева, либо из краев ячейки, либо из вставок Automati c, ничего не изменится с разделителями, которые появляются под каждым из моих заголовков. Точно так же, если я установлю эти значения программно в методе viewDidLoad моего контроллера табличного представления, например, так:

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.rowHeight = UITableView.automaticDimension
    tableView.register(TableSectionHeaderViewCell.self, forHeaderFooterViewReuseIdentifier: "ItemHeader")

    tableView.separatorInset = UIEdgeInsets(top: 0, left: 26, bottom: 0, right: 0)
    tableView.separatorStyle = .singleLine
    tableView.separatorInsetReference = .fromCellEdges
}

Ничего не изменится со вставками разделителя, даже используя опцию .fromAutomaticInsets для вставки разделителя ссылка. Вот что я на самом деле вижу:

enter image description here

Кажется, что первая и последняя ячейки в разделе фактически не соответствуют вставкам разделителя. Первоначально я думал, что это проблема, связанная с наличием заголовка для каждого сгруппированного раздела, но разделитель в последней ячейке без заголовка ниже, похоже, указывает на иное. Как я могу сделать так, чтобы все эти разделители были вставлены на 26 пунктов? Спасибо за любую информацию, которую вы можете предоставить.

1 Ответ

2 голосов
/ 29 января 2020

Затем проверьте эту ветку, я думаю, это поможет:

Сгруппированный UITableview удалить внешнюю разделительную линию

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

Другой вариант, который я могу предложить, - это не использовать табличное представление в групповом стиле, использовать простое и обрабатывать его самостоятельно.

...