将单元格添加到可见的空 UITableView 以白色背景显示

Posted

技术标签:

【中文标题】将单元格添加到可见的空 UITableView 以白色背景显示【英文标题】:Adding cells to visible empty UITableView show up with white background 【发布时间】:2019-01-06 03:50:52 【问题描述】:

使用 Xcode 10+、Swift 4+、ios 11+

我创建了一个顶部有一个 SearchBar 的简单搜索视图, 下面有一个 UITableView。

当视图第一次显示时,表格是空的,当用户在搜索栏中输入文本时,我将结果添加到表格中。功能上,一切正常。

接下来,我将主视图背景设为蓝色,并希望整个 TableView 清晰,以便我可以看到背景。

我已经在“viewDidLoad”中设置了表格视图背景:

myTable.backgroundColor = UIColor.clear

在“cellForRowAt”中,我将单元格背景设置为清除:

var cell:UITableViewCell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "cell")
cell.backgroundColor = UIColor.clear
cell.contentView.backgroundColor = UIColor.clear

但是,当搜索返回值并将单元格添加到表中时, 它们总是有白色背景而不是清晰的。

如果我在不清除表格的情况下弹出然后推送搜索视图,现有表格单元格会按照我想要的方式显示(重绘) - 清除。

我也尝试将其添加到“didFinishLaunchingWithOptions”,但没有帮助:

UITableViewCell.appearance().backgroundColor = UIColor.clear

如何使单元格在首次创建时显示清晰?

【问题讨论】:

当您查看视图层次结构调试器时,究竟什么是白色? @Mocha 我查看了层次结构并发现了问题 - 我使用的是 SearchBar 控制器而不是 SearchBar - 所以我有两个 TableViews 出现在层次结构中,一个属于 Search 的是问题。我现在已更改为搜索栏(仅)并且它正在工作。谢谢,呵呵! 【参考方案1】:

尝试在单元格显示时设置单元格或表格视图的背景颜色。

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 
    cell.backgroundColor = UIColor.clear

或者你可以覆盖函数setBackgroundView来调试问题。

【讨论】:

以上是关于将单元格添加到可见的空 UITableView 以白色背景显示的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 将单元格添加到带有核心数据和 NSFetchedResultsController 的空 UITableView 部分

当单元格不可见时,UITableView indexPathForCell 返回 null

动态地将单元格添加到分组的 uitableview 并以编程方式适应滚动

UITextField 成为第一响应者后,UITableView 不会将单元格滚动到可见

在ios中为uitableview的所有单元格下添加不可见的detailview,并在用户点击单元格时使其可见/不可见

如何将集合视图单元格滚动到可见区域的中间