使用UITableView单元格作为UIView并通过点击它永久地改变颜色(颜色源来自生成随机颜色的函数)

时间:2016-12-15 07:53:29

标签: ios iphone swift uitableview uiview

我想将操作分配给UITableView单元格,以便在使用生成随机UIColor的函数轻触它时永久更改其颜色。

我是一个完全的初学者,找不到任何可以帮助我或我理解的东西。我不算100%的解决方案(这是受欢迎的),但如果我能得到任何帮助,可以让我跟上这个,我真的很感激。

下面是给定控制器的代码(在教程的帮助下编写):

import UIKit

class FruitsTableViewController: UITableViewController {

    func getRandomColor() -> UIColor{
        //Generate between 0 to 1
        let red:CGFloat = CGFloat(drand48())
        let green:CGFloat = CGFloat(drand48())
        let blue:CGFloat = CGFloat(drand48())

        return UIColor(red:red, green: green, blue: blue, alpha: 1.0)
    }


    // MARK: - Table View data source

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "LabelCell", for: indexPath)

        cell.textLabel?.text = "Section \(indexPath.section) Row \(indexPath.row)"

        return cell
    }

    override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        return "Section \(section)"
    }

}

2 个答案:

答案 0 :(得分:1)

在下面写taxe代表:

UITableView

当您重复使用单元格时,它可能会在滚动时再次改变颜色。

答案 1 :(得分:0)

使用此方法:

使用变量检查TableViewCell的选择。 enter image description here

var isSelected : Bool! = false


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

    cell.textLabel?.text = String(indexPath.row)

    if isSelected == true
    {
        cell.backgroundColor = self.getRandomColor()
    }
    else
    {

    }

    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    isSelected = true
    tblView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic)
}