我遇到的情况是,我必须为单个tableView使用两个不同的原型单元。这两个原型单元具有不同的高度。当我尝试运行该应用程序时,没有得到不同高度的单元格。相反,我正在重叠细胞。这些单元在索引2处相互重叠。
我为单元格制作了两个xib,并在表格视图中注册了两个单元格。 Screenshot of what I am getting
extension Redeem: UITableViewDelegate, UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 4
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0{
let cell1 = tableView.dequeueReusableCell(withIdentifier: "RedeemCell1", for: indexPath) as! RedeemCell1
return cell1
} else if indexPath.row == 1{
let cell1 = tableView.dequeueReusableCell(withIdentifier: "RedeemCell1", for: indexPath) as! RedeemCell1
return cell1
} else if indexPath.row == 2{
let cell2 = tableView.dequeueReusableCell(withIdentifier: "RedeemCell2", for: indexPath) as! RedeemCell2
return cell2
} else if indexPath.row == 3{
let cell1 = tableView.dequeueReusableCell(withIdentifier: "RedeemCell1", for: indexPath) as! RedeemCell1
return cell1
} else {
let cell1 = tableView.dequeueReusableCell(withIdentifier: "RedeemCell1", for: indexPath) as! RedeemCell1
return cell1
}
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
}
答案 0 :(得分:0)
您需要实现heightForRowAt
func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat
if indexPath.row == 0 {
return 200
}
else if {} // and so on
}
或使用动态高度表单元格
答案 1 :(得分:0)
我认为单元格的布局不正确。
要定义单元格的高度,您需要不间断的约束链 和视图(具有定义的高度)以填充内容之间的区域 视图的顶部边缘及其底部边缘。
如果在单元格中使用XIB,则可以更改单元格中的模拟大小,并查看发生了什么。该单元应该没有破损的约束。