Bu çözümlerin hiçbiri benim için işe yaramadı. İşte Swift 4 ve Xcode 10.1 ile yaptığım şey ...
ViewDidLoad () öğesinde, tablo dinamik satır yüksekliğini bildirin ve hücrelerde doğru kısıtlamalar oluşturun ...
tableView.rowHeight = UITableView.automaticDimension
Ayrıca viewDidLoad () 'da, tüm tableView hücre uçlarınızı tableview'e aşağıdaki gibi kaydedin:
tableView.register(UINib(nibName: "YourTableViewCell", bundle: nil), forCellReuseIdentifier: "YourTableViewCell")
tableView.register(UINib(nibName: "YourSecondTableViewCell", bundle: nil), forCellReuseIdentifier: "YourSecondTableViewCell")
tableView.register(UINib(nibName: "YourThirdTableViewCell", bundle: nil), forCellReuseIdentifier: "YourThirdTableViewCell")
TableView heightForRowAt öğesinde, indexPath.row dosyasındaki her bir hücrenin yüksekliğine eşit olan dönüş yüksekliği ...
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 {
let cell = Bundle.main.loadNibNamed("YourTableViewCell", owner: self, options: nil)?.first as! YourTableViewCell
return cell.layer.frame.height
} else if indexPath.row == 1 {
let cell = Bundle.main.loadNibNamed("YourSecondTableViewCell", owner: self, options: nil)?.first as! YourSecondTableViewCell
return cell.layer.frame.height
} else {
let cell = Bundle.main.loadNibNamed("YourThirdTableViewCell", owner: self, options: nil)?.first as! YourThirdTableViewCell
return cell.layer.frame.height
}
}
Şimdi, tablodaki her hücre için tahmini bir satır yüksekliği verin (TahminiHeightForRowAt). Mümkün olduğunca doğru olun ...
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 {
return 400 // or whatever YourTableViewCell's height is
} else if indexPath.row == 1 {
return 231 // or whatever YourSecondTableViewCell's height is
} else {
return 216 // or whatever YourThirdTableViewCell's height is
}
}
İşe yarayacak ...
TableView.reloadData () öğesini çağırırken contentOffset'i kaydetmem ve ayarlamam gerekmiyordu
reloadRowsAtIndexPaths
. Fakat (2) "gergin" ile ne demek istiyorsun ve (3) tahmini bir satır yüksekliği ayarladın? (Sadece tabloyu dinamik olarak güncellemenizi sağlayacak daha iyi bir çözüm olup olmadığını anlamaya