【发布时间】:2021-12-27 07:35:05
【问题描述】:
我正在尝试创建一个应用程序,但我遇到了一个简单的问题:如何向我的自定义单元格添加删除按钮?
-
我创建了一个 NewCocoaTouchClass
-
我已经创建了我的自定义设计(还为每个单元格添加了一个按钮)并在 TableViewCellController 中提供了 Outlets
-
我设法将我的自定义单元格实现到另一个 viewController
-
我在 viewController 上创建了一个按钮
我希望当用户点击我的新按钮时,会出现单元格按钮,然后我可以单独删除单元格。当我创建 IbAction 时,我无法检索单元格代码,因为该单元格仅在我的 tableViewCode 中定义。
提前致谢
Ps:我还实现了通过滑动删除单元格,但我的自定义单元格设计与标准矩形删除选项不兼容(这很糟糕)。
TableViewCellController
import UIKit
class CustomTableTableViewCell: UITableViewCell {
static let identificatore = "CustomTableTableViewCell"
static func nib() -> UINib {
return UINib(nibName: "CustomTableTableViewCell", bundle: nil)
}
@IBOutlet weak var ImmagineCella: UIImageView!
@IBOutlet weak var TestoCella: UILabel!
@IBOutlet weak var Button: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
视图控制器
import UIKit
class MaterieViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var materie : [String] = ["zoifvdhfdv", "szvzv", "zdvzfv", "zfdvbfdb", "bfzdfb"]
@IBOutlet weak var TableViewMaterie: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
TableViewMaterie.register(CustomTableTableViewCell.nib(), forCellReuseIdentifier: CustomTableTableViewCell.identificatore)
TableViewMaterie.delegate = self
TableViewMaterie.dataSource = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return materie.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: CustomTableTableViewCell.identificatore, for: indexPath) as! CustomTableTableViewCell
cell.TestoCella.text = materie[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 67.83
}
@IBAction func EditButton(_ sender: UIButton) {
}
}
【问题讨论】:
-
您可以在 cellForAtIndexpath 中为每个按钮添加按钮标签并制作委托,从 cellForAtIndexpath 方法传递委托引用。当按钮单击时,您必须检查按钮标签并删除按钮。在单元格中,您必须调用委托,一旦您删除按钮,主类将通过委托知道删除操作,然后您必须在委托一致性类中重新加载表格视图
-
@Jok3r 这几乎是 Swift 中最糟糕的选择。更好的方法是将单元格和实际索引路径传递回控制器的回调闭包。这避免了通过重新加载表格视图来更新所有标签。 @ Saucer21 滑动操作有什么问题?
-
@vadian 我们不能使用 didSelectRowAtIndexPath 吗?