이 솔루션들 중 어느 것도 나를 위해 일하지 않았습니다. Swift 4 및 Xcode 10.1로 수행 한 작업 은 다음과 같습니다. ...
viewDidLoad ()에서 테이블 동적 행 높이를 선언하고 셀에 올바른 제한 조건을 작성하십시오.
tableView.rowHeight = UITableView.automaticDimension
또한 viewDidLoad ()에서 모든 tableView 셀 펜촉을 다음과 같이 tableview에 등록하십시오.
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에서 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
}
}
이제 tableView expectedHeightForRowAt의 각 셀에 대해 예상 행 높이를 제공하십시오. 최대한 정확하게 ...
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
}
}
작동해야합니다 ...
tableView.reloadData ()를 호출 할 때 contentOffset을 저장하고 설정할 필요가 없었습니다.
reloadRowsAtIndexPaths
. 그러나 (2) "점프"는 무엇을 의미합니까? (3) 예상 행 높이를 설정 했습니까? (테이블을 동적으로 업데이트 할 수있는 더 나은 솔루션이 있는지 알아 내려고 노력했습니다.)