我正在使用didSelectRowAtIndexPath
:
aCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as? UITableViewCell
其中aCell是类级变量。
这很好但我发现点击的细胞仍然是灰色的。有没有办法在单击另一个单元格时取消突出显示它们?
我可以存储以前单击的NSIndexPath,但我不确定如何访问任何类型的单元格非突出显示方法或属性。
答案 0 :(得分:2)
您的问题并不完全清楚,但看起来您在dequeueReusableCell(withIdentifier:forIndexPath:)
内使用tableView(_:didDeselectRowAtIndexPath:)
。
你不应该这样做。
dequeueReusableCell(withIdentifier:forIndexPath:)
旨在用于配置单元格的tableView(_:cellForRowAtIndexPath:)
内。它要么创建并初始化 new 单元格,要么返回从屏幕滚动的单元格以供重复使用。重点是:它永远不会返回指向当前可见的单元格的指针。
如果您想获取对当前可见单元格的引用,请使用cellForRowAtIndexPath(_:)
代替表格视图。
如果您只想取消选择某个索引路径的单元格
你甚至不需要获得对实际单元格的引用。您可以通过将行的indexPath
传递给表视图的取消选择方法来简单地实现所需的行为。例如,如果您想在用户点击它之后立即取消选择一个单元格,您可以这样做:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
有关详细信息,请参阅Table View Programming Guide for iOS中的UITableView Class Reference和方法dequeueReusableCell(withIdentifier:forIndexPath:)
的文档。
答案 1 :(得分:1)
如果要删除单元格的选定状态,则需要调用将所选状态设置为false
在didSelectRowAtIndexPath:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("Is this function working??")
let cell = tableView.cellForRowAtIndexPath(indexPath) //get the correct cell
cell?.selected = false //Will no longer be selected. Gray tableviewcell will now be normal.
}
答案 2 :(得分:0)
将单元格的选定视图属性更改为具有清晰颜色的视图。如果您需要代码,请告诉我
更改选择样式(Swift 2)您可以在故事板上执行相同操作。
cell.selectionStyle = UITableViewCellSelectionStyle.None
创建自定义视图
让selectedView = UIView()
selectedView.backgroundColor = UIColor.clearColor()
cell.selectedBackgroundView = selectedView