我想在单个表视图中使用笔尖中的两个不同的自定义单元格。两个原型单元的高度不同

时间:2019-06-14 17:53:46

标签: ios swift uitableview tableview

我遇到的情况是,我必须为单个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
        }
}

2 个答案:

答案 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,则可以更改单元格中的模拟大小,并查看发生了什么。该单元应该没有破损的约束。