2016-09-05 1 views
2

У меня есть несколько динамических ячеек с разной высотой строки. Таким образом, я пытаюсь обновить высоту строки с помощью метода estimatedHeightForRowAtIndexPathоцененныйHeightForRowAtIndexPath не обновляет высоту строки

Это мой код:

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

    switch indexPath.row { 
    case 0: 
     return 132 
    case 1: 
     return 66 
    case 2: 
     return 80 
    case 3: 
     return 70 
    case 4: 
     return 50 
    case 5: 
     return 60 
    case 6: 
     return 60 
    default: 
     return 60 

    } 

} 

Но, высота строки не обновляется. Он использует расчетную высоту строки из раскадровки. В чем проблема?

ответ

2

В вашем случае вы должны использовать метод heightForRowAtIndexPath.

Используйте estimatedHeightForRowAtIndexPath, если вы хотите использовать ячейки с автоматическим изменением размера.

Обеспечение оценки высоты строк может улучшить пользователя при загрузке представления таблицы. Если таблица содержит переменные строки , может быть дорого рассчитать все их высоты и , что приведет к увеличению времени загрузки. Использование оценки позволяет отложить часть стоимости расчета геометрии от времени загрузки до прокрутки времени.

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 
    switch indexPath.row { 
    case 0: 
     return 132 
    case 1: 
     return 66 
    case 2: 
     return 80 
    case 3: 
     return 70 
    case 4: 
     return 50 
    case 5: 
     return 60 
    case 6: 
     return 60 
    default: 
     return 60 

    } 

} 
+0

Ohhhh !!!! Я так невнимателен! Большое спасибо, Олег! Вы сэкономили много времени! :) –

+0

«Использовать' оценочныйHeightForRowAtIndexPath', если вы хотите использовать ячейки с автоматическим изменением размера. " ... Нет, вы используете это (или, лучше, просто установите приблизительную высоту строки для самой таблицы), когда (а) у вас есть строки с разной высотой (при реализации 'heightForRowAtIndexPath' на самом деле является типичным прецедентом) ; но (б) вы не хотите, чтобы он вычислял фактические высоты для всех строк, которые могут еще не отображаться. Теперь, в этом случае, если видно только шесть строк, это не имеет значения. Но если есть много строк, которые не видны, можно также установить расчетную высоту. – Rob

+0

@Rob thx Я использовал valuightHeight только для авторезисторных ячеек. Thx для обмена опытом. –