点击复选框时删除自定义UITableViewCell

时间:2018-10-23 23:24:30

标签: ios swift uitableview

我是一名试图学习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()
    }
}

任何帮助将不胜感激!谢谢!

0 个答案:

没有答案