将自定义项添加到Swift中的表视图

时间:2016-06-17 10:44:11

标签: ios swift contextmenu cell menuitem

我正在尝试将自定义项添加到ViewController中的表格视图菜单中。我已经实施了所有必要的方法,但我的项目仍未显示。如果我使用默认项目,例如" copy"一切正常。我省略了performAction方法,因为我真的不知道在那里添加什么,但没有它就会出现复制动作。你能告诉我我错了吗?我已附加我的代码以添加以下自定义菜单项:

override func viewDidLoad() {
    super.viewDidLoad()

    let item = UIMenuItem(title: "Block and Report", action: #selector(MessageViewController.blockAndReport(_:)))

    let menu = UIMenuController.sharedMenuController()

    var newItems = menu.menuItems
        ?? [UIMenuItem]()
    newItems.append(item)
    menu.menuItems = newItems ...}

func tableView(tableView: UITableView, shouldShowMenuForRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return true
}

func tableView(tableView: UITableView, canPerformAction action: Selector, forRowAtIndexPath indexPath: NSIndexPath, withSender sender: AnyObject?) -> Bool {

    if action == #selector(MessageViewController.blockAndReport(_:)) {
        return true
    }


    return false
}

func tableView(tableView: UITableView, performAction action: Selector, forRowAtIndexPath indexPath: NSIndexPath, withSender sender: AnyObject?) {

    //I don't really know what to add here
}

func blockAndReport(sender: AnyObject?) {

    print("Hello")

}

2 个答案:

答案 0 :(得分:0)

将自定义项目添加到超级视图作为子视图

使用此行

self.tableview.addSubview(item)

答案 1 :(得分:0)

事实证明我必须设置TableViewCell类并将其连接到我的单元格,在这个类中我必须实现方法blockAndReport。现在一切正常。我的结论是,您不能对同一类的表菜单项使用方法。