Swift 3:UITableViewCell禁用选择样式也禁用选择

时间:2017-02-07 07:57:57

标签: ios swift uitableview swift3

我的tableview单元格存在严重问题。所以这是场景:

  1. 在表格视图中输入编辑模式
  2. 缩进复选标记进来,我喜欢通过点击它们来选择单元格 没有蓝色/灰色/任何选择样式。
  3. 我做了什么:

    的TableView

    self.tableView.allowsSelectionDuringEditing = true
    self.tableView.allowsMultipleSelectionDuringEditing = true
    

    细胞

    self.selectionStyle = .none -> Results in no longer selectable cells
    

    期望:

    左边的复选标记被选中,没有该死的蓝色边框/灰色背景。

    结果:

    背景视图可见,它会杀死单元格子视图(蓝色背景消失,白色文本不再可见等)

    我已经测试过没有任何正面结果:

    Cell.appearence().selectedBackground.color = UIColor.clear
    

    cell.selectedBackground.color = UIColor.clear
    

    override var isSelected:... within the cell
    

    也许你有任何想法。

3 个答案:

答案 0 :(得分:2)

试试这个:

Cell.selectionStyle = UITableViewCellSelectionStyle.none

答案 1 :(得分:0)

我提出了我自己的自定义解决方案来解决上述问题:

在单元格的awakeFromNib方法中我刚刚创建了UIView实例,如:

self.selectedBackgroundView = UIView()

在该方法中不再做任何事情。作为解决我的问题的补充,我将我的所有ui设计内容外包给自定义方法。

然后我覆盖 setHighlighted setSelected 方法:

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
    self.setUIproperties()
}

override func setHighlighted(_ highlighted: Bool, animated: Bool) {
    super.setHighlighted(highlighted, animated: animated)
    self.setUIproperties()
}

为什么我这样做?

因为为您的手机提供自定义设计,必须进行覆盖。否则所有背景都将被设置为白色。 覆盖setSelected是不够的,因为当你长按单元格时,它会闪烁,你会看到突出显示的状态也会操纵你的ui。

我希望这对你们中的一些人有所帮助。

答案 2 :(得分:-1)

试试这个:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    tableView.deselectRow(at: indexPath, animated: true)
    //...
}