【问题标题】:UITableView Cell not showing Delete MenuUITableView 单元格不显示删除菜单
【发布时间】:2018-06-25 15:41:17
【问题描述】:

UITableViewCell 未在此弹出菜单中显示“删除”选项。它转到下面代码中的删除条件,但它没有显示在菜单中。

func tableView(_ tableView: UITableView, canPerformAction action: Selector, forRowAt indexPath: IndexPath, withSender sender: Any?) -> Bool {

    print(action)
    print(action == #selector(delete(_:)))

    if action == #selector(copy(_:)) {
        return true
    }
    if action == #selector(paste(_:)) {
        return true
    }
    if action == #selector(delete(_:)) {
        return true
    }


    return super.canPerformAction(action, withSender: sender)

}

【问题讨论】:

  • print(action) 打印出更多(总共 20 个,包括删除、复制和粘贴)操作,您有什么理由专门询问“删除”吗?
  • 我必须实现删除行功能。但它没有出现在菜单中

标签: ios swift uitableview uitableviewrowaction


【解决方案1】:

默认情况下,您将获得剪切/复制/粘贴(可以通过在 canPerformAction 中返回 false 来阻止其中任何一个),但其他操作(其中您将看到总共 20 个,包括删除以及其他 iOS默认情况下,UITableViewCell 的上下文菜单中不包含标准系统操作,例如“selectAll”和“makeTextWritingDirectionRightToLeft”。

如果您想要显示任何其他操作,您必须在您的 UITableViewCell 子类中实现它们。

例如在您的单元子类中添加:

override func delete(_ sender: Any?) {
    print("delete")
}

如果您为删除选择器返回true,您应该会在任何此类单元格的上下文菜单中看到删除项。表格视图的代理中的performAction 仍然是必需的,否则它根本不会显示菜单,但实际的操作处理在此单元格子类方法中。

如果您想添加自定义操作,您可以将它们添加到共享的 UIMenuController 项目中,也可以在 UITableViewCell 子类中实现它们。 (使用this tutorial作为参考,以及我自己的测试)。

例如在您的视图控制器的viewDidLoad

let menuController = UIMenuController.shared
let item = UIMenuItem(title: "My Custom Action", action: #selector("youraction"))
var items = menuController.menuItems ?? [UIMenuItem]()
items.append(item)
menuController.menuItems = items

那么你需要在你的UITableViewCell 子类中实现“youraction”,否则它不会显示出来。

请注意,您在canPerformAction 中看到的标准 20 个操作都不需要手动添加到共享菜单控制器,就像您需要将它们添加到您的单元子类一样。

【讨论】:

  • 奇怪,似乎canPerformAction 在显示菜单之前和按下菜单项后都被调用了一次......(但文档似乎没有提到这种行为)。我想它让开发人员有机会阻止最初似乎是允许的操作......? documentation for this delegate method 已经有点糟糕了,因为它甚至没有提到您会看到其他操作,而不仅仅是复制/粘贴或如何让其他操作显示......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多