如何在iOS Swift3中更改特定的单元格颜色

时间:2018-11-16 07:44:22

标签: ios iphone swift

我有一个类似[1,2,3,4,5]的String数组。我在表视图中显示此数组。我的问题是,如果我只想更改第三个单元格的颜色,如何在iOS Swift中将第三个元素与数组进行比较?

3 个答案:

答案 0 :(得分:1)

根据条件在tableview委托方法上更改所需颜色

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
cell.backgroundColor = indexPath.row == 2 ? .red : yellow //or use cell.contentView.backgroundColor = = indexPath.row == 2 ? .red : yellow
}

如果要更改包含3个条件的数组,请使用like

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
cell.backgroundColor = yourArrayName[indexPath.row] == "3" ? .red : yellow //or use cell.contentView.backgroundColor = = yourArrayName[indexPath.row] == "3" ? .red : yellow
}

好的,我们可以选择其他方式

 override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
   cell.backgroundColor = .yellow
  if let index = yourArrayName.index(of: "3") {
   cell.backgroundColor = indexPath.row == index ? .red : yellow 
  }
}

答案 1 :(得分:1)

您也可以像这样检查cellforrow函数内部的条件:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ExampleCellIndentifier", for: indexPath) as! ExampleCell

        if indexPath.row == 2{
            // Do your modification on the 3rd cell item
            cell.backgroundColor = .red
        }

        return cell
    } 

答案 2 :(得分:0)

我刚刚在cellForRowAt下应用了条件

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "TextFieldInTableViewCell") as! myProfieTabelViewCellTableViewCell
    if indexPath[1] % 2  == 0{
         cell.backgroundColor = #colorLiteral(red: 0.9088078997, green: 0.9088078997, blue: 0.9088078997, alpha: 1)
        print(indexPath[1])
    }
    else{
         cell.backgroundColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
    }
    cell.selectionStyle = .none
    return cell
}