如何在UITableView中自定义删除按钮

时间:2016-05-26 17:40:22

标签: ios swift uitableview

我尝试在infile['exporting'] = { u'chartOptions': { u'legend': { u'maxHeight': ??? } } } 中自定义删除按钮。我使用了一个函数,但它没有用,因为Xcode发现了一个错误。顺便说一句,我在UITableView中使用自定义单元格。

这是我的代码:

UITableView

这一行是错误的:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var myTableView: UITableView!


    override func viewDidLoad() {
        super.viewDidLoad()

    }

    func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
            let deleteButton = UITableViewRowAction(style: .Default, title: "Delete", handler: { (action, indexPath) in
                self.myTableView.dataSource?.tableView?(
                    self.myTableView,
                    commitEditingStyle: .Delete,
                    forRowAtIndexPath: indexPath
                )

                return
            })

            deleteButton.backgroundColor = UIColor.blackColor()

            return [deleteButton]
    }


}
错误是: Objective-C方法'tableView:editActionsForRowAtIndexPath:'由方法提供'tableView(:editActionsForRowAtIndexPath :)'与可选的需求方法'tableView(:editActionsForRowAtIndexPath :)冲突'in protocol'UITableViewDelegate'

所以我想改变文字和背景颜色。如果有任何其他方法,比如使用图标而不是文字,请告诉我,谢谢。

2 个答案:

答案 0 :(得分:2)

错误表示您使用与UITableViewDelegate中定义的方法签名相同的方法签名定义的函数具有不兼容的不同类型。具体而言,您的返回类型必须为[UITableViewRowAction]?,而不是[AnyObject]?

变化:

    func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {

要:

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

答案 1 :(得分:1)

你的主要问题是UITableViewDelegate方法是

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

而不是

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

我希望这有助于你