删除UITableViewCell的

时间:2018-07-31 18:13:31

标签: ios swift uitableview

我为UITableView创建了自定义TableViewCell:

class DialogCell: UITableViewCell {

    var dialog: Dialog? {
        didSet {
            setupDialog()
            if let seconds = dialog?.message!["timestamp"] {
                ...
            }
        }
    }

    private func setupDialog() {
        ... 
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        ...
    }

        override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
            super.init(style: .subtitle, reuseIdentifier: reuseIdentifier)
            addSubview(timeLabel)
            addSubview(profileImageView)

            timeLabel.frame = CGRect(x: 140, y: 65, width: 100, height: 30)
            profileImageView.frame = CGRect(x: 30, y: 20, width: 80, height: 80)
        }

        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }

}

我需要在选择时更改单元格的背景颜色:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let selectedCell: UITableViewCell = dialogsTableView.cellForRow(at: indexPath)!
        selectedCell.contentView.backgroundColor = .pink
        ...
    }

但是我有一些灰线。

我将这些代码添加到viewDidLoad():

dialogsTableView.separatorColor = .clear
dialogsTableView.separatorStyle = .none
dialogsTableView.register(DialogCell.self, forCellReuseIdentifier: cellid)
dialogsTableView.backgroundColor = .black

但是它不起作用。 怎么了谢谢

UPD:单击单元格后,出现灰线。 enter image description here

3 个答案:

答案 0 :(得分:0)

尝试

cell.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: .greatestFiniteMagnitude)

答案 1 :(得分:0)

我知道您已经通过代码尝试过此操作,但也尝试使用接口。请尝试以下解决方案: 打开表视图的属性检查器,如下所示:

Attributes Inspector

现在将“分隔符值”选择为“无”。

如果仍然无法使用,请在应用程序运行时以及在相应屏幕上按以下所示按钮使用“调试视图层次结构”。这样一来,您就可以查看视图的布局方式,并缩小问题出处的确切范围。

enter image description here

希望这会有所帮助:)

答案 2 :(得分:0)

我决定尝试“调试视图层次结构”并找到问题。

我选择的BackgroundView颜色为灰色。然后我重新分配了selectedBackgroundView:

let backView = UIView(frame: selectedCell.frame)
    backView.backgroundColor = .pink
    selectedCell.selectedBackgroundView = backView

selectedBackgroundView位于中间。感谢Asim的想法。

enter image description here