我有以下内容-
class BTTableView: UITableView, UITableViewDelegate, UITableViewDataSource
使用这些方法-
public func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
public func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
return .delete
}
public func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath)
{
print("editingStyle")
}
当我在某个单元格上向左滑动时,“删除”选项按预期显示- Delete action shown
如果我-
在我看来,此方法将同时被#1和#2调用。
有人可以帮助我了解我做错了什么吗?
编辑-通过DonMag的输入,解决了以下问题:
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if let hitView = super.hitTest(point, with: event) {
let isSwipeButton = String(describing: type(of: hitView)) == "UISwipeActionStandardButton"
if hitView.isKind(of: BTTableCellContentView.self) || isSwipeButton {
return hitView
}
}
return nil;
}
答案 0 :(得分:0)
您很可能忘记写了:
self.delegate = self
self.dataSource = self
答案 1 :(得分:0)
似乎没有调用commit
,因为该类覆盖了hitTest
:
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if let hitView = super.hitTest(point, with: event) , hitView.isKind(of: BTTableCellContentView.self) {
return hitView
}
return nil;
}
并返回nil
,因为hitView
是操作按钮。
简单地删除它可能/将引起问题(首先注意到的是,在其外部点击时,“下拉”不会关闭)。
因此,您需要编辑该功能...可能需要一些工作,但这是开始的地方。