新的iOS 11 UITableView
滑动操作未被调用。 delegate
和datasource
在该表上工作正常。
我无法滑动并查看菜单项。
下面是我的代码。
func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let contextItem = UIContextualAction(style: .normal, title: "Leading & .normal") { (contextualAction, view, boolValue) in
print("Leading Action style .normal")
}
let swipeActions = UISwipeActionsConfiguration(actions: [contextItem])
return swipeActions
}
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let contextItem = UIContextualAction(style: .destructive, title: "Trailing & .destructive") { (contextualAction, view, boolValue) in
print("Trailing Action style .destructive")
}
let swipeActions = UISwipeActionsConfiguration(actions: [contextItem])
return swipeActions
}
我试图在下面打电话给它,并且工作正常。
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
}
}
高度赞赏任何正确方向的提示。
答案 0 :(得分:3)
您需要在闭包true
中将UIContextualAction
传递到boolValue(true)
。否则处理程序将不允许该操作。
func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let contextItem = UIContextualAction(style: .normal, title: "Leading & .normal") { (contextualAction, view, boolValue) in
boolValue(true) // pass true if you want the handler to allow the action
print("Leading Action style .normal")
}
let swipeActions = UISwipeActionsConfiguration(actions: [contextItem])
return swipeActions
}
答案 1 :(得分:1)
代码看起来不错,但是您可能缺少Class声明中的“ UITableViewDelegate”和viewdidload()部分中的“ TableView.delegate = self”。所以它应该像这样:
{'total': 979,
'detractors': 313,
'passives': 291,
'promoters': 375,
'nps': 0.06332992849846783}
答案 2 :(得分:1)
对于那些使用 UITableViewDiffableDataSource
的人,您需要将其子类化并override
其 canEditRowAt
方法。
public override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
true
}