在UITableView(SWIFT)中删除按钮

时间:2015-03-01 13:57:41

标签: ios swift uitableview

我这里有一段代码,除了一小块外,它似乎工作得很好。

import UIKit

class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    @IBOutlet var tblTasks: UITableView!

    //Returning to view
    override func viewWillAppear(animated: Bool) {
        tblTasks.reloadData();
    }

    //UItableViewDataSource
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        return taskMgr.tasks.count
    }

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

    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
        if (editingStyle == UITableViewCellEditingStyle.Delete) {
            // handle delete (by removing the data from your array and updating the tableview)
        }
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{        
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "test")
        cell.textLabel?.text = taskMgr.tasks[indexPath.row].name
        cell.detailTextLabel?.text = taskMgr.tasks[indexPath.row].desc
        return cell
     }
}

我已经介绍了这些行,以便能够删除表视图中的行

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

func tableView(tableView: UITableView, 
               commitEditingStyle editingStyle: UITableViewCellEditingStyle, 
               forRowAtIndexPath indexPath: NSIndexPath) {
    if (editingStyle == UITableViewCellEditingStyle.Delete) {
        // handle delete (by removing the data from your array and updating the tableview)            
    }
}

他们所做的是让我可以从右向左滑动行,但行不会被删除。

在这种情况下,引入DELETE按钮的最佳方法是什么?

最好的问候,弗拉德

3 个答案:

答案 0 :(得分:2)

override func tableView(tableView: UITableView, commitEditingStyle  editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath:   NSIndexPath) { 

if editingStyle == UITableViewCellEditingStyle.Delete {
//delete row at selected index 
numbers.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic) 
              } 
 }

答案 1 :(得分:0)

   func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
                if editingStyle == UITableViewCellEditingStyle.Delete { 
   yourArray.removeAtIndex(indexPath.row)

   tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)

    }

 }

答案 2 :(得分:0)

以下是 Swift 3.x 的清理版本:

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        // Delete from your source, then update the tableView
        numbers.removeAtIndex(indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .automatic)
    }
}
  1. 检查以确保在继续
  2. 之前删除了editingStyle
  3. 从数据源中删除值(在本例中为numbers
  4. 最后,传递indexPath作为要删除的数组,以及您想要的动画(在本例中为automatic