为啥顶部的tableViewCell 是灰色的?
Posted
技术标签:
【中文标题】为啥顶部的tableViewCell 是灰色的?【英文标题】:Why is the top tableViewCell gray?为什么顶部的tableViewCell 是灰色的? 【发布时间】:2017-08-14 02:18:44 【问题描述】:我正在使用普通 UIViewController 中的 UITableView。出于某种原因,我的 TableView 中顶部单元格的文本始终是灰色的。
我一直试图找出导致该单元格变灰的原因,但不知道它是什么。我的 tableView 中的数据来自一个名为 fileList 的数组,该数组在 viewWillAppear 和 viewDidAppear 期间都会刷新。
为什么顶部单元格总是带有此代码的灰色?
(而且它确实发生在 fileList 中什么都没有和 fileList 中有很多东西的情况下)
//MARK: - TableView
extension ViewController: UITableViewDataSource, UITableViewDelegate
func numberOfSectionsInTableView(tableView: UITableView) -> Int
return 1
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if fileList.count == 0
return 1
else
return fileList.count
internal func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
if fileList.count == 0
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.isUserInteractionEnabled = false
cell.accessoryType = UITableViewCellAccessoryType.none
cell.textLabel?.text = "No documents found"
cell.textLabel?.textAlignment = .center
cell.textLabel?.textColor = UIColor.black
return cell
else
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.isUserInteractionEnabled = true
cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
cell.textLabel?.text = (fileList[indexPath.row])
cell.textLabel?.textAlignment = .left
cell.textLabel?.textColor = UIColor.black
return cell
【问题讨论】:
【参考方案1】:运行您的代码没有问题,对我来说运行良好。
即使设置cell.selectionstyle = .grey
也不会将灰色添加到单元格或文本中。
你必须对问题更清楚。
1) 什么是灰色?文本颜色或单元格颜色。
2) 你隐藏或分开的代码是什么?
extension ViewController : UITableViewDelegate,UITableViewDataSource
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return fileList.count
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
let rowData = fileList[indexPath.row]
cell?.textLabel?.text = rowData
//cell?.isSelected = true
cell?.selectionStyle = .gray
cell?.isUserInteractionEnabled = true
cell?.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
cell?.textLabel?.textAlignment = .left
cell?.textLabel?.textColor = UIColor.black // if let priceString = rowData[2] as? String cell.priceLabel.text = "Price: $(priceString)"
return cell!
// Number of sections in table
func numberOfSections(in tableView: UITableView) -> Int
return 1
// Default is 1 if not implemented
【讨论】:
单元格的文本颜色为灰色。还有一堆其他代码——它检索用户文档目录中的文件列表(或者如果 iCloud Drive 已打开,则从应用程序的 Ubiquitous Container 中检索),用于填充 tableview。除了我在上面共享的扩展之外,没有其他任何东西对 tableview 或其单元格有任何作用。 @Grant 和第一个单元格的唯一灰色而不是其他任何单元格? 是的,这只是第一个单元格【参考方案2】:我相信这和here提到的问题是一样的。尝试设置:
cell?.textLabel?.isEnabled = true`
在fileList.count == 0
的if语句块中
cell.isUserInteractionEnabled = false
【讨论】:
以上是关于为啥顶部的tableViewCell 是灰色的?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 tableviewcell 返回一个 optional("")