我有以下代码但是当我选择我的单元格时,它不会保持选中状态:
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;
}
如何选择细胞?当我让我的触摸离开牢房时,它会删除选择。
答案 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()
}
}