Почему TableView FooterView не существует в viewDidLoad () и как это исправить? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть tableView с одним разделом и нижним колонтитулом в раскадровке. Я пытаюсь изменить текст в таблице footerView в viewDidLoad() со следующим кодом

tableView.footerView(forSection: 0)?.textLabel?.text = "Testing text"

но tableView.footerView(forSection: 0) == nil

Затем, нажав пользователя на кнопку, я вызываю функцию, которая изменяет текст footerView, используя тот же код, и он отлично работает.

func changeFooterText() {
    tableView.footerView(forSection: 0)?.textLabel?.text = "Testing text after tap"
}

Почему footerView не существует в viewDidLoad и как я могу изменить его текст в viewDidLoad? Или я должен изменить это в другом месте? Когда экран загружен, мне нужен текст в нижнем колонтитуле, который зависит от других данных на экране.

Ждем ваших добрых советов.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

"viewDidLoad" слишком рано в жизненном цикле представления.UITableView еще не создал свои компоненты.

Вы могли бы быть в состоянии сойти с перемещением кода в "viewDidAppear", однако было бы лучше создать ваши нижние колонтитулы и верхние колонтитулы.так же, как вы строите другие клетки. Метод делегата dequeueReusableHeaderFooterViewWithIdentifier как раз для этого.

0 голосов
/ 06 сентября 2018

Вы можете использовать методы представления нижнего колонтитула таблицы:

override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? 
...