无法从可重用tableview单元格上的superview中删除视图

时间:2018-12-25 11:43:58

标签: ios swift uitableview

prom

我正在尝试删除在可重用的tableview单元格中使用标记创建的视图。

但是,第一次重用时(在tableview的5.部分),我仍然可以看到UIButton和UIImageview,然后开始正确删除

为什么在第一次重用时不将它们删除?

1 个答案:

答案 0 :(得分:0)

我想在您的情况下重复使用可能意味着为一个单元格两次添加了图像视图和按钮。不过,您只能删除其中之一。我认为您应该考虑采用其他方法(如@vadian所描述的不同原型单元格),但是目前(假设我的假设是正确的),您可以尝试解决此问题:

替换...

if let viewWithTag = cell.viewWithTag(3) {
    if viewWithTag is UIImageView {
        print("DONE")
        viewWithTag.removeFromSuperview()
    }
}
if let viewWithTag = cell.viewWithTag(3) {
    if viewWithTag is UIButton {
        print("DONE")
        viewWithTag.removeFromSuperview()
    }
}

有...

while let viewToRemove = cell.viewWithTag(3) {
    if viewToRemove is UIImageView || viewToRemove is UIButton {
        viewToRemove.removeFromSuperview()
    }
}

更新- 具有不同单元格类型的方法如下所示:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let release = array[exist: indexPath.section] else { return cell }

    if release.user == "condition" {
        let cell = tableView.dequeueReusableCell(withIdentifier: "OneIdentifier", for: indexPath) as! OneCustomCellType
        // configure your cell
        return cell
    } else {
        let cell = tableView.dequeueReusableCell(withIdentifier: "AnotherIdentifier", for: indexPath) as! AnotherCustomCellType
        // configure your cell
        return cell
    }
}