Ios 为什么可以';我看不到我的TableViewRowActions按钮(在swift中)?

Ios 为什么可以';我看不到我的TableViewRowActions按钮(在swift中)?,ios,swift,uitableview,uitableviewrowaction,Ios,Swift,Uitableview,Uitableviewrowaction,我想在我的tableview中的所有单元格上实现滑动移动。 在阅读了4个不同的教程之后,我不明白为什么我的动作按钮没有出现:我可以“滑动”,我可以看到按钮应该在的空白处。即使我的处理程序也不会在单击时调用 class RestaurantsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet weak var mTableView: UITableView! priva

我想在我的tableview中的所有单元格上实现滑动移动。 在阅读了4个不同的教程之后,我不明白为什么我的动作按钮没有出现:我可以“滑动”,我可以看到按钮应该在的空白处。即使我的处理程序也不会在单击时调用

class RestaurantsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var mTableView: UITableView!

private var restosList = [Restaurant]()

override func viewDidLoad() {
    super.viewDidLoad()
    self.mTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

    let url = "http://xxxxxxxxxx"
    Alamofire.request(.GET, url, parameters: ["service" : "restaurants"])
        .responseArray { (response: [Restaurant]?, error: NSError?) in
            if let response = response {
                for oneResto in response {
                    self.restosList.append(oneResto)
                }
            }
            self.mTableView.reloadData()
    }

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell:UITableViewCell = self.mTableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell

    cell.textLabel?.text = self.restosList[indexPath.row].nom

    return cell
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.restosList.count
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var alert:UIAlertView = UIAlertView()
    alert.title = self.restosList[indexPath.row].description
    alert.addButtonWithTitle("OK")
    alert.show()

    self.mTableView.deselectRowAtIndexPath(indexPath, animated: true)
}

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

    let deleteClosure = { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
        println("Delete closure called")
    }

    let moreClosure = { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
        println("More closure called")
    }

    let deleteAction = UITableViewRowAction(style: .Default, title: "Delete", handler: deleteClosure)
    let moreAction = UITableViewRowAction(style: .Normal, title: "More", handler: moreClosure)

    return [deleteAction, moreAction]
}

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    // Intentionally blank. Required to use UITableViewRowActions
}

尝试用此代码重新加载表视图数据

self.tableView.reloadData()

将CaneditRowatineXpath方法添加到视图控制器并返回true

我通常将我的处理程序代码作为闭包直接放入参数中,但我认为这不会有什么区别

代码如下:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

var myItems = ["Item 1","Item 2","Item 3"]

@IBOutlet weak var myTable: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return myItems.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")

    cell.textLabel?.text = myItems[indexPath.row]

    return cell

}

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

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    // Okie dokie
}

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


    let editAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Edit", handler: {

        Void in

        println("edit swipe")

    })

    let superAction = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "Super", handler: {

        Void in

        println("super swipe")

    })

    return [editAction, superAction]

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}

您是否介意发布关于所有tableviewController的代码,因为您发布的代码是OK的,我只是将整个类放入。我将在几分钟后将代码添加到我的答案中,您可以根据这些代码进行验证。我有相同的代码,但仍然无法工作。可能是因为我使用了自定义单元格?不应该,我也使用自定义单元格。是否将表视图委托分配给了self?是的。自定义单元格中没有要实现的方法?