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

91
10

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

enter image description here

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

enter image description here

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

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
}

спросил(а) 2015-05-06T10:25:00+03:00 5 лет, 5 месяцев назад
1
Решение
90

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

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

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

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

ответил(а) 2015-05-06T10:48:00+03:00 5 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема