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() после получения обновления массива

Другие вопросы по тегам