如何选择UITableView单元格

时间:2018-01-14 04:34:41

标签: ios swift uitableview

我有以下代码但是当我选择我的单元格时,它不会保持选中状态:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath);
    // cell.delegate = self;

    cell.backgroundColor = UIColor.clear;

    let select = UIView();
    select.backgroundColor = UIColor.green;
    cell.selectedBackgroundView = select;

    cell.textLabel?.text = activities[indexPath.row];

    // cell.selectionStyle = .blue;

    return cell;
}

如何选择细胞?当我让我的触摸离开牢房时,它会删除选择。

2 个答案:

答案 0 :(得分:1)

创建一个存储所选单元格索引的int变量。在didselctedIndexPath中设置它的值。检查它在cellforrowatindexpath中的值。

class ViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!

    var array = ["One", "Two", "Three", "Four", "Five"]
    var selectedIndex:Int? = nil

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self
        tableView.reloadData()

        tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "TableViewCell")
    }
}

extension ViewController: UITableViewDataSource, UITableViewDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return array.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell") as! TableViewCell
        cell.lblTitle.text = array[indexPath.row]

        if let index = selectedIndex, indexPath.row == index {
            cell.backgroundColor = UIColor.blue
        }

        let cellBackground = UIView()
        cellBackground.backgroundColor = UIColor.blue
        cell.selectedBackgroundView = cellBackground
        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        selectedIndex = indexPath.row
    }
}

答案 1 :(得分:0)

这是我的解决方案。这可能会对你有所帮助。

func tableView(........) {
    if cell.selected {
        cell.selected = true
    //  cell.backgroundColor = UIColor.blackColor()
    } else {
        cell.selected = false
    //  cell.backgroundColor = UIColor.blackColor()
    }
}