问题描述
我是 Swift 编程的新手。我有以下 UI:
每次我单击其中一行时,该行就会消失,我不知道为什么。我刚刚发现每次一行消失时都会调用 tableView didSelectRowAt
。
class TodoListController: UIViewController,UITableViewDelegate,UITableViewDataSource {
@IBOutlet var tableView: UITableView!
let toyData = ["1","2","3","4","5"]
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
let nib = UINib(nibName: "TableViewCell",bundle: nil)
tableView.register(nib,forCellReuseIdentifier: "TableViewCell")
tableView.backgroundColor = UIColor.init(red: 255/255,green: 214/255,blue: 107/255,alpha: 1)
}
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
print("do nothing")
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell",for: indexPath) as! TableViewCell
cell.textField?.text = "just how?!"
return cell
}
}
import UIKit
class TableViewCell: UITableViewCell {
@IBOutlet var button:UIButton!
@IBOutlet var textField:UITextField!
override func awakeFromNib() {
super.awakeFromNib()
let bottomLine = CALayer()
bottomLine.frame = CGRect(x: 10,y: self.frame.height,width: self.frame.width+70,height: 0.5)
bottomLine.backgroundColor = UIColor.init(red: 253/255,green: 50/255,blue: 39/255,alpha: 1).cgColor
self.layer.addSublayer(bottomLine)
self.backgroundColor = UIColor.init(red: 255/255,alpha: 1)
}
}
解决方法
在您的 cellForRowAt 函数中添加以下内容:
cell.selectionStyle = .none
有时这种奇怪的行为是由于默认选择样式造成的。