为啥顶部的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("")

iOS 7 - 故事板。为啥无法设置 tableViewCell 选择颜色

为啥 tableviewcell 没有更新?

tableviewCell实用小技术

为啥我的 UISearchDisplayController 不使用我的自定义 tableViewCell?