我有一个透明背景颜色的UITableView和具有透明背景颜色的单元格。当我用:
重新加载我的tableView时dataSource = some new data
tableView.reloadData()
我确实尝试过使用
tableView.beginUpdates()
// remove all rows here
change data source
// insert new rows here
tableView.endUpdates()
但它不起作用。我也试过tableView.reloadRowsAtIndexPath(...)
,但仍然没有运气。
最后,我重新绘制了所有单元格和表格视图以清除图形上下文,但它无法解决此问题。
非常感谢任何帮助。
我的细胞创建功能:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("suggestioncell")
cell.backgroundColor = UIColor.whiteColor().alpha(0.1)
cell.textLabel?.text = (suggestions![indexPath.row] as! SVPlacemark).formattedAddress
cell.clearsContextBeforeDrawing = true
cell.contentView.clearsContextBeforeDrawing = true
return cell
}
答案 0 :(得分:0)
尝试覆盖prepareForReuse
子类中的UITableViewCell
,然后重置内容。
以下是文档中关于此的内容:
准备可重用的单元格以供表格视图的委托重用。
如果UITableViewCell对象是可重用的 - 也就是说,它具有重用标识符 - 在从UITableView方法dequeueReusableCellWithIdentifier:返回对象之前调用此方法:出于性能原因,您应该仅重置与内容无关的单元格属性,例如,alpha,编辑和选择状态。 tableView:cellForRowAtIndexPath:中的表视图委托应始终在重用单元格时重置所有内容。如果单元对象没有关联的重用标识符,则不会调用此方法。如果重写此方法,则必须确保调用超类实现。
答案 1 :(得分:0)
自定义UITableViewCell类:
class customCell: UITableViewCell {
override func prepareForReuse() {
self.textLabel?.text = nil
}
}
在你的cellForRowAtIndexPath方法中:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("suggestionCell", forIndexPath: indexPath) as! customCell
cell.backgroundColor = UIColor.whiteColor().alpha(0.1)
cell.textLabel?.text = (suggestions![indexPath.row] as! SVPlacemark).formattedAddress
return cell
}
当然,在您的XIB / Storyboard中,将单元类设置为CustomCell,并设置其重用标识符。