Как изменить размер UITableViewCell после установки его размера в функции heightForRowAt в Swift?

#ios #swift #uitableview

#iOS #swift #uitableview

Вопрос:

Я хочу, чтобы последняя ячейка tableViewCell была такой же большой, как TableView, но я хочу, чтобы старые ячейки возвращались к нормальному размеру каждый раз, когда я создаю новую.

Я уже пробовал, делая это в функции heightForRowAt, но каждая ячейка остается размером TableView.

 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    var cellHeight: CGFloat = CGFloat()
    for cell in tableView.visibleCells {
        cellHeight = cell.bounds.height
    }

    let TableHeight = tableView.frame.height


    if indexPath.row == arr.count - 1 {
        return TableHeight
    }else{

        return cellHeight
    }

}
 

Есть ли какой-либо способ изменить размер ячейки после ее создания или любое другое решение моей проблемы?

Заранее спасибо

Ответ №1:

Просто попробуйте поместить постоянное число в нормальную высоту ячейки

  if indexPath.row == arr.count - 1 {
    return TableHeight
 }else{
    return 40 // or whatever you want
 }
 

если вы спросите себя, почему?
В первый раз высота ваших ячеек будет равна нулю, а в последний раз — TableHeight

Тогда при каждом вызове метода heightForRowAt высота ваших ячеек будет равна = TableHeight, а последняя высота также будет TableHeight .

потому что ваш цикл for вернет высоту последней ячейки из visibleCells, и у вас есть одна видимая ячейка "other cells not visibles height = zero" , поэтому она будет высотой таблицы

Комментарии:

1. Спасибо, это сработало. Но у меня есть динамические высоты ячеек с автозаполнением, поэтому, если ячейка больше обычной высоты ячейки, она будет обрезана.