После прохождения через все другие форм переполнения стека, я реализовал динамическую высоту для одного из моих клеток следующим образом:TableView - heightForRowAtIndexPath не называется
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as UITableViewCell
if(indexPath.row == 1){
var image : UIImage = maskRoundedImage(image: UIImage(named: "Temp_Profile.png")!, radius: 150)
cell.imageView?.image = image
return cell
}
cell.textLabel?.text = TableArray[indexPath.row]
cell.backgroundColor = UIColor.init(colorLiteralRed: 0.56, green: 0, blue: 0.035, alpha: 1)
cell.textLabel?.textColor = UIColor.white
cell.textLabel?.font = UIFont(name: "Helvetica", size: 28)
return cell
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == 1 {
return UITableViewAutomaticDimension * 3
}
return UITableViewAutomaticDimension
}
Это кажется довольно простым, но сеанс отладки показывает, что heightForRowAtIndexPath никогда не вызывается. Контроллер просмотра - это UITableViewController, и все остальное работает правильно. Кто-нибудь из вас видит причину, по которой эта функция не вызывается?
Благодарим за помощь!
Как указано ниже, UITableViewAutomaticDimension не является значением, которое должно использоваться для арифметики. возвращение UITableViewAutomaticDimension * 3 будет иметь непредсказуемые эффекты. – PeejWeej
Обратите внимание, что вызов 'heightForRowAt' может быть дорогим; вы также можете вызвать 'self.tableView.rowHeight = UITableViewAutomaticDimension' и ' self.tableView.estimatedRowHeight = 72.0 // оцененное среднее значение 'в' viewDidLoad'. Se также, например, здесь: https://www.appcoda.com/self-sizing-cells/ – Koen