我有一个表格视图单元格,其中除其他外还包含一个堆栈视图。如果满足某些要求,则堆栈视图应仅在单元格中。如果不是,则应降低电池的高度。
当我使用.isHidden时,高度保持不变。但是我希望从该单元格中删除堆栈视图。

这是我的代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "RumCell", for: indexPath) as! RumCell

    let currentRum: Rum
    currentRum = rumList[indexPath.row]

    cell.rum = currentRum

    if (cell.rum?.clubRatingJuicy == 0) && (cell.rum?.clubRatingGasy == 0) && (cell.rum?.clubRatingSpicy == 0) && (cell.rum?.clubRatingSweet == 0) {
        cell.frame.size.height -= 76
    }

    return cell
}


如您所见,我试图减小像元高度,但这是行不通的。我也试过了,这行不通:

    if (cell.rum?.clubRatingJuicy == 0) && (cell.rum?.clubRatingGasy == 0) && (cell.rum?.clubRatingSpicy == 0) && (cell.rum?.clubRatingSweet == 0) {
        cell.tastStack.removeFromSuperview()
    }


谁能告诉我该怎么做?

最佳答案

您应该使用不同的单元原型RumCell(没有stackview)和RumCellDetailed(带有stackview),它们都符合协议RumCellProtocol(可以在其中设置rum var)

protocol RumCellProtocol {
    func config(rum: Rum)
}


和此代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    var cellIdentifier = "RumCellDetailed"

    if (cell.rum?.clubRatingJuicy == 0) && (cell.rum?.clubRatingGasy == 0) && (cell.rum?.clubRatingSpicy == 0) && (cell.rum?.clubRatingSweet == 0) {
        cellIdentifier = "RumCell"
    }


    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! RumCellProtocol

    let currentRum: Rum
    currentRum = rumList[indexPath.row]

    cell.config(rum: currentRum)

    return cell
}

10-06 09:26
查看更多