Подтвердить что ты не робот

UITableView: изменение размера просмотра нижнего колонтитула программно не работает

Нижний стол таблицы представляет собой представление, которое показывает некоторые твиты от пользователя, поэтому я не знаю его высоты, пока не получил твиты, я создал FooterViewController, у которого есть метод refreshTweets, я добавляю его в viewDidLoad:

FooterViewController *controller = [[FooterViewController alloc] initWithNibName...];
[[self tableView] setFooterView:[controller view]];
[controller refreshTweets];

в методе refreshTweets, я прочитал твиты и вычислил общую высоту и высоту reset (нижний колонтитул):

self.view.frame = newFrame;

но это не имеет смысла, высота нижнего колонтитула по-прежнему является той высотой, которую я установил в Interface Builder, нет ли чего-либо или какого-либо альтернативного способа сделать это?

Спасибо!

изменить: Я могу изменить размер представления, чтобы быть достаточно маленьким в построителе интерфейса, и он будет увеличен после вычисления высоты твитов и установки view.frame, но в представлении таблицы по-прежнему считается, что нижний колонтитул имеет предыдущую высоту, то есть дополнительное пространство находится за пределами таблицы, и я могу видеть это только в том случае, если я перетащил таблицу вверх.

4b9b3361

Ответ 1

myTable.tableFooterView = myFooterView;

Повторно назначьте представление нижнего колонтитула таблице. Таблица распознает, что у нее есть новый нижний колонтитул и повторное выполнение любого макета для правильного размера нижнего колонтитула.

Ответ 2

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

В Swift: -

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return 0.5
}


func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let footerView = UIView()
    let footerChildView = UIView(frame: CGRect(x: 60, y: 0, width: tableView.frame.width - 60, height: 0.5))
    footerChildView.backgroundColor = UIColor.darkGray
    footerView.addSubview(footerChildView)
    return footerView
}