方法tableView editActionsForrowAtIndexPath与objective-c选择器与来自超类的方法冲突

时间:2016-03-30 18:14:35

标签: ios swift uitableview

在我的应用程序中,我的课程定义如下:

class MyTableViewController: UITableViewController {

在里面我想添加滑动所选单元格的功能(取自this回答)

但是当我写到这里时:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
    let more = UITableViewRowAction(style: .Normal, title: "More") { action, index in
        print("more button tapped")
    }
    more.backgroundColor = UIColor.lightGrayColor()

    let favorite = UITableViewRowAction(style: .Normal, title: "Favorite") { action, index in
        print("favorite button tapped")
    }
    favorite.backgroundColor = UIColor.orangeColor()

    let share = UITableViewRowAction(style: .Normal, title: "Share") { action, index in
        print("share button tapped")
    }
    share.backgroundColor = UIColor.blueColor()

    return [share, favorite, more]
}

我收到错误:

  

使用Objective-C的方法'tableView(:editActionsForRowAtIndexPath :)'   selector'tableView:editActionsForRowAtIndexPath:'与之冲突   来自超类的方法'tableView(:editActionsForRowAtIndexPath :)'   'UITableViewController'具有相同的Objective-C选择器

我尝试添加override,但它没有帮助 - 导致此错误的原因以及如何解决?

1 个答案:

答案 0 :(得分:6)

签名略有不同:返回值应为[UITableViewRowAction]?而不是[AnyObject]?

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]?

您还需要override