swift heightForRowAt indexPath не обновляется
С помощью этого кода я установил автоматическое измерение ячейки на основе количества элементов в массиве. Это работает, но когда я добавляю какой-то новый элемент с другим viewController, а затем возвращаюсь к нему, высота не обновляется, даже если количество массивов увеличивается.
Я получаю массив в viewDidAppear
Кто-нибудь может мне помочь?
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
print("called")
let misure = self.array.count
let cellHeight = CGFloat(50.0 * Float(misure))
print(cellHeight)
print(misure, " misure")
let section = indexPath.section
let row = indexPath.row
if section == 3 && row == 0{
return 100.0
}else if section == 4 && row == 0{
return cellHeight + 60.0
}
return 44.0
}
в viewDidLoad я установил
tableView.estimatedRowHeight = 44
3 ответа
Вау я нашел решение!
Благодаря этому ответу: Swift: Как перезагрузить высоту строки в UITableViewCell без перезагрузки данных
Просто использовал
tableView.beginUpdates()
tableView.endUpdates()
в viewDidAppear
Я надеюсь, что это поможет кому-то еще!
Я думаю, если вы позвоните tableView.layoutIfNeeded()
должен быть лучше. Это обновит все обновления макета, которые находятся в состоянии ожидания. Не пытался изменить высоту с этим, но это должно работать.
Вызовите tableView.reloadData() после получения обновления массива