Không có giải pháp nào trong số này làm việc cho tôi. Đây là những gì tôi đã làm với Swift 4 & Xcode 10.1 ...
Trong viewDidLoad (), khai báo chiều cao hàng động của bảng và tạo các ràng buộc chính xác trong các ô ...
tableView.rowHeight = UITableView.automaticDimension
Ngoài ra trong viewDidLoad (), hãy đăng ký tất cả các ngòi tế bào trong bảng của bạn để xem bảng như thế này:
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")
Trong bảngView heightForRowAt, trả về chiều cao bằng với chiều cao của mỗi ô tại indexPath.row ...
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
}
}
Bây giờ, đưa ra chiều cao hàng ước tính cho mỗi ô trong bảngView ước tínhHeightForRowAt. Hãy chính xác như bạn có thể ...
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
}
}
Cần làm việc...
Tôi không cần lưu và đặt nội dung Offerset khi gọi bảngView.reloadData ()
reloadRowsAtIndexPaths
. Nhưng (2) bạn có ý nghĩa gì khi "tăng vọt" và (3) bạn đã đặt chiều cao hàng ước tính? (Chỉ cần cố gắng tìm hiểu xem có giải pháp nào tốt hơn cho phép bạn cập nhật bảng một cách linh hoạt không.)