【问题标题】:Why adding subView to tableViewCell is added multiple times?为什么将 subView 添加到 tableViewCell 会被多次添加?
【发布时间】:2019-07-13 04:40:26
【问题描述】:

我想在 tableViewCell 中添加自定义 subView。基本上每次我点击单元格内的图像时。它将显示带有标签的自定义子视图。我的项目的链接是here

问题是,例如,当我单击特定单元格 (0) 时。它显示 (0) 值,但它也在 indexPath #2 上显示 (0) 值。当我单击单元格 (1) 时也是如此,它还将在 indexPath #3 上显示 (1) 值。模式依次为 (0-2) 和 (1-3)

我听说有人建议使用 prepareForReuse 方法,但到目前为止还没有运气。

我欢迎任何想法和帮助。谢谢。

【问题讨论】:

    标签: ios swift uitableview addsubview


    【解决方案1】:

    你需要清除单元格,因为它们被取消了

    let subview = TagBox(frame: CGRect(x: self.view.frame.width/2, y: self.view.frame.height/2, width: 100, height: 30), boxName: label)
    subview.backgroundColor = UIColor.black
    subview.tag = 120
    

    cell.contentView.subviews.forEach {
        if $0.tag == 120 { 
            $0.removeFromSuperview()
        } 
    }
    

    或在单元格内

    override func prepareForReuse() {
        super.prepareForReuse()
        self.contentView.subviews.forEach {
            if $0.tag == 120 {
                $0.removeFromSuperview()
            }
        }
    }
    

    【讨论】:

    • 单元格何时出列? @Sh_Khan
    • 滚动时
    • 您的代码在滚动时会删除每个子视图。有没有办法让点击的保持可见? @Sh_Khan
    • 您需要将此信息保存在列表中每个项目的模型中,并反映在cellForRowAt
    • 您介意更具体地解释一下我该怎么做吗?谢谢@Sh_Khan
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多