tableView не устанавливает автоматическую высоту строки

В моем проекте у меня есть статический tableView с 3 разделами. Ячейка во втором разделе содержит метку, которая заполняется динамически и поэтому имеет динамическую высоту. Ячейка должна отрегулировать свою высоту в соответствии с высотой метки. Вот что я пробовал, но безуспешно:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if indexPath.section == 0 {
      return 44
    } else if indexPath.section == 1 {
      return UITableViewAutomaticDimension
    } else if indexPath.section == 2 {
      return 80
    } else {
      return 50
    }
}

Высоты всех секций установлены правильно, кроме автоматических размеров. Любая помощь?


person Luk579    schedule 13.07.2016    source источник
comment
Было бы полезно получить дополнительную информацию - вы установили все ограничения для своей ячейки? Правильно ли вы установили метку (т.е. numberOfLines = 0, lineBreakMode)?   -  person bradkratky    schedule 13.07.2016
comment
Я установил ограничения метки на 10 слева, 10 сверху и 10 справа. Метка имеет 0 строк и по умолчанию lineBreakMode (Truncate Tail). Что-то изменить здесь?   -  person Luk579    schedule 13.07.2016
comment
Да, вы хотите, чтобы lineBreakMode был переносом слов! 0 строк верны, вам нужно, чтобы была многострочная метка.   -  person bradkratky    schedule 13.07.2016


Ответы (2)


установить эту строку в viewDidLoad()

tableView.rowHeight = UITableViewAutomaticDimension

затем напишите этот метод table view

 func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
    {
        return UITableViewAutomaticDimension
    }

также убедитесь, что вы правильно использовали auto layout. и вы установили number of lines for lable = 0

person Harshal Bhavsar    schedule 13.07.2016
comment
К сожалению, это не работает, может быть, что-то с autoLayout? Я устанавливаю ограничения только для метки внутри ячейки (слева 10, сверху 10, справа 10) и устанавливаю строки равными 0. - person Luk579; 13.07.2016
comment
Пожалуйста, дайте нижние ограничения также - person Harshal Bhavsar; 13.07.2016
comment
Это сделало это. Спасибо! - person Luk579; 13.07.2016
comment
Добро пожаловать. Не стесняйтесь оценивать - person Harshal Bhavsar; 13.07.2016

Вам также необходимо указать предполагаемую высоту строки. Вы можете сделать это, используя свойство estimatedRowHeight вашего UITableView или реализовав соответствующий метод делегата:

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return XXXXX // Provide your estimation here, or pass UITableViewAutomaticDimension (not the best for performances)
}

Ссылка: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithSelf-SizingTableViewCells.html

person Alessandro Orrù    schedule 13.07.2016