2016-06-01 3 views
0

У меня есть UIViewController, настроенный в построителе интерфейса. Он содержит UITableView и UIView как заголовок, а другой UIView - нижний колонтитул.UITableView's tableFooterView отображается очень странным образом

(Обратите внимание, что эти два UIViews, которые действуют, как верхние и нижние колонтитулы НЕ раздел колонтитулы.)

Заголовок работает просто отлично. В построителе интерфейсов UITableView выровнен по сравнению с супервидом (сверху: 0, внизу: 0, ведущий: 0, конечный: 0). Затем я выровнял headerView (UIView) в верхней части UITableView, придав ему равную ширину и горизонтальную ориентацию по отношению к UITableView. Высота headerView настроена в соответствии с ее подвью.

В файле .m я установил

self.myTableView.tableHeaderView = self.headerView; 

Все работает отлично. Разумеется, заголовочный файл прикреплен к вершине UITableView, и когда вы прокручиваете вниз прокрутки headerView, он исчезает с экрана. Отлично.

Я думал, что сделаю то же самое с нижним колонтитулом. В самом деле, я сделал то же самое, за исключением того, что я выровнял нижнюю часть footerView с UITableView (да, обе доли равны ширине и горизонтальной центровке). Я установил высоту footerView как некоторое фиксированное значение.

В файле .m я добавляю эту строку кода:

self.myTableView.tableFooterView = self.footerView; 

И это, где это становится странно ... Когда я перечисляю на дно, есть место для UIView footerView, точно в соответствии с высотой footerView, которую я указал в построителе интерфейса.

И когда я прокручиваю назад, удерживая палец на прокрутке, чтобы перейти в PAST вверху UITableView, subviews footerView UP THE! WTF!

Кто-нибудь это понимает?

Все сконфигурировано в Interface Builder, а свойства tableHeaderView и tableFooterView назначаются в методе viewDidLoad :.

+0

Вы пытались назначить свойства заголовка и нижнего колонтитула в viewDidLayoutSubviews: вместо viewDidLoad :? –

+0

При настройке нижнего колонтитула и свойств заголовка в viewDidLayoutSubviews footerView отображается в нижней части экрана без прокрутки (вид в середине UITableView). Когда я прокручиваю вниз, он перемещается вверх с ячейками просмотра таблицы ... не желаемое поведение. – ArthurVonBabylon

ответ

0

Это уродливое, хакерское решение, до сих пор.

FooterView и UITableView выравниваются по нижнему краю, и я связываю это ограничение с файлом .m как свойство (bottomToBottomConstraint). Затем я устанавливаю myTableView.contentSize.height как bottomToBottomConstraint.constant, и представление появляется там, где я хочу.

self.bottomToBottomConstraint.constant = self.myTableView.contentSize.height; 

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

Смежные вопросы