ios - 如何快速在特定表格 View 行执行特定操作?

标签 ios swift uitableview uitableviewrowaction

enter image description here

我有一个表格 View 单元格。我为公寓的租户制作了一个应用程序来报告房间设施的缺陷。如果缺陷已经被修复(状态:Complete),服务器的数据将给出defect.status == 2(如果defect.status == 1,仍在修复过程中),它会显示YES和NO按钮,如上图。

我希望如果它仍在修复过程中,则不会出现包含“您是否满意”标签和是否按钮的 View 。预期结果应该如下图所示

enter image description here

这是我用来删除满意或不满意 View 的代码

extension RequestDefectVC : UITableViewDataSource {

     //MARK: Table View Delegate & Datasource

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return listDefects.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "defectCell", for: indexPath) as! RequestDefectCell

        let dataDefect = listDefects[indexPath.row]
        cell.defectData = dataDefect

        if dataDefect.status == 2 {
            if let wantToRemoveView = cell.commentResponseView {
                wantToRemoveView.removeFromSuperview()
            }
        }


        return cell
    }

}

但不幸的是,如果 wantToRemoveView.removeFromSuperview() 被触发,它将删除所有单元格中的所有 View ,即使状态已完成,如下图所示

enter image description here

我希望在状态完成时显示satisfied or not view,否则将被删除。怎么做?

最佳答案

因为你的costumed cells是重复使用的,移除views会造成不确定的影响。您实际上不需要删除特定 View ,只要它保持不可见即可。

if dataDefect.status == 2 {
    if let wantToRemoveView = cell.commentResponseView {
        wantToRemoveView.isHidden = true
    }
} else {
    if let wantToRemoveView = cell.commentResponseView {
        wantToRemoveView.isHidden = false
    }
}

关于ios - 如何快速在特定表格 View 行执行特定操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50504240/

相关文章:

objective-c - 地理围栏后台应用程序可能吗?

swift - 为什么这个脉动动画会移动 x 和 y 位置?

iphone - UITableViewCell 在编辑模式下移动时显示两个不同的项目

ios - 如何正确重用 Objective c 中的单元格?

ios - UICollectionViewCell 改变位置

ios - map 仅显示最后记录的注释

ios - 从选定的帐户SLComposeViewController获取Twitter详细信息

swift - 如何从 collectionview 重新加载部分

ios - Facebook 嵌入帖子移动应用程序

ios - 使用 Masonry 自动布局 UITableViewCell