我是一名试图学习iOS编程的学生,遇到了一些麻烦。我试图在我的自定义UITableViewCell中添加一个复选框按钮,并允许其在按下时删除单元格。但是,即使我可以添加按钮并且可以将其按下,也不会发生任何事情。 UITableViewCell仍然存在。我该如何解决?
这是我的自定义单元格类:
import UIKit
class ClientCell: UITableViewCell {
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var clientImageView: UIImageView!
@IBAction func checkBoxTapped(_ sender: UIButton) {
if sender.isSelected == true {
sender.isSelected = false
} else {
sender.isSelected = true
}
}
}
这是包含UITableView的ViewController:
import UIKit
import CoreData
class ClientsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Client")
var clients = [NSManagedObject]()
@IBOutlet weak var clientTable: UITableView!
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return clients.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ClientCell
cell.label.text = clients[indexPath.row].value(forKey: "name") as? String
cell.clientImageView.layer.cornerRadius = 12
return(cell)
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCell.EditingStyle.delete {
CDHandler.deleteObject(indexPath: indexPath)
clients.remove(at: indexPath.row)
clientTable.reloadData()
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
if CDHandler.fetchObject() != nil {
clients = CDHandler.fetchObject()!
}
clientTable.reloadData()
}
}
任何帮助将不胜感激!谢谢!