gpt4 book ai didi

ios - Swift - 在 Button-Tap 之后从 TableView 中删除单元格

转载 作者:行者123 更新时间:2023-11-28 23:24:18 26 4
gpt4 key购买 nike

在我的项目中,我有一个UITableView。其中的 cells 包含一个 UIButton ,其作用类似于“复选框”,因此用户可以勾选任务。

我的问题:当用户按下单元格内的 UIButton 后,如何删除单元格?

这是我的customCell:

import UIKit

class WhishCell: UITableViewCell {

let label: UILabel = {
let v = UILabel()
v.font = UIFont(name: "AvenirNext", size: 23)
v.textColor = .white
v.font = v.font.withSize(23)
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()

let checkButton: UIButton = {
let v = UIButton()
v.backgroundColor = .darkGray
// v.layer.borderColor = UIColor.red.cgColor
// v.layer.borderWidth = 2.0
v.translatesAutoresizingMaskIntoConstraints = false
v.setBackgroundImage(UIImage(named: "boxUnchecked"), for: .normal)

return v
}()



public static let reuseID = "WhishCell"

required init?(coder: NSCoder) {fatalError("init(coder:) has not been implemented")}

override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)

self.backgroundColor = .clear

// add checkButton
self.contentView.addSubview(checkButton)
self.checkButton.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 20).isActive = true
self.checkButton.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
self.checkButton.widthAnchor.constraint(equalToConstant: 40).isActive = true
self.checkButton.heightAnchor.constraint(equalToConstant: 40).isActive = true
self.checkButton.addTarget(self, action: #selector(checkButtonTapped), for: .touchUpInside)
// add label
self.contentView.addSubview(label)
self.label.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 70).isActive = true
self.label.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true



}

@objc func checkButtonTapped(){
self.checkButton.setBackgroundImage(UIImage(named: "boxChecked"), for: .normal)
self.checkButton.alpha = 0
self.checkButton.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)

UIView.animate(withDuration: 0.3) {
self.checkButton.alpha = 1
self.checkButton.transform = CGAffineTransform.identity
}


}
}

最佳答案

您可以使用此扩展访问单元格中的 tableViewindexPath:

extension UITableViewCell {
var tableView: UITableView? {
return (next as? UITableView) ?? (parentViewController as? UITableViewController)?.tableView
}

var indexPath: IndexPath? {
return tableView?.indexPath(for: self)
}
}

在其他扩展的帮助下:

extension UIView {
var parentViewController: UIViewController? {
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.next
if let viewController = parentResponder as? UIViewController {
return viewController
}
}
return nil
}
}

那么您就可以像往常一样删除单元格:

tableView!.deleteRows(at: [indexPath!], with: .automatic)  

注意 tableView 应该负责管理单元格。

关于ios - Swift - 在 Button-Tap 之后从 TableView 中删除单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59107182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com