Мой вид заголовка в UITableView не добавляется в иерархию UIView

С помощью UITableView а также NSFetchedResultsController Я обновляю и отображаю содержимое моей таблицы. В какой-то момент у меня появился экран без заголовка. Должно быть вместо пространства между клетками.

введите описание изображения здесь

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

введите описание изображения здесь

Для создания представления заголовка я использую следующий метод:

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let workday = workDayObjectForSection(section)
    let cell = tableView.dequeueReusableCellWithIdentifier(PBOUserWorkDayCellIdentifier) as! PBOUserWorkDayTableViewCell
    cell.configureCellWithWorkDay(workday)

    return cell
}

1 ответ

Вы не должны получить view за tableView использование заголовка dequeueReusableCellWithIdentifier метод. Из документации:

Если объект ячейки можно использовать повторно, вы присваиваете ему идентификатор повторного использования (произвольную строку) в раскадровке. Во время выполнения табличное представление хранит объекты ячеек во внутренней очереди. Когда табличное представление просит источник данных настроить объект ячейки для отображения, источник данных может получить доступ к помещенному в очередь объекту, отправив сообщение dequeueReusableCellWithIdentifier: в табличное представление, передав идентификатор повторного использования

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

Тем не менее, вы можете использовать тот же вид для заголовка, но создать его из xib, storyboard и т. д. каждый раз и не назначайте идентификаторы повторного использования. И если вам нужна оптимизация, вы можете сохранить их в некотором массиве и вернуть кэшированные значения. Но я хотел бы рекомендовать не использовать подклассы UITableViewCell как представления заголовка таблицы

Другие вопросы по тегам