如何删除swift中按钮操作的uitableview行?

时间:2016-02-04 09:56:31

标签: uitableview swift2

我想在swift中删除uibutton操作中的UITableView行。

4 个答案:

答案 0 :(得分:2)

你需要做的就是:

func myButtonMethod(sender : UIButton!) {
   self.dataSource.removeAtIndex(myIndex) // dataSource being your dataSource array
   self.tableview!.reloadData()
// you can also call this method if you want to reduce the load, will also allow you to choose an animation  
//self.tableView!.deleteRowsAtIndexPaths([NSIndexPath(forItem: myIndex, inSection: 0)], withRowAnimation: nil)
}

添加这样的方法作为按钮的目标:

 self.myButton.addTarget(self, action: "myButtonMethod:", forControlEvents: .TouchUpInside)

答案 1 :(得分:2)

你可以这样做:

@IBAction func removeCell() {
    self.dataSource.removeAtIndex(index) // this is the dataSource array of your tableView
    tableView.deleteRowsAtIndexPaths([NSIndexPath(forItem: index, inSection: 0)], withRowAnimation: .Left)
}

将此按钮的IBActiontouchUpInside操作相关联。确保先从数据源中删除元素,然后将其从表格视图中删除。

如果您不想动画删除行,可以使用tableView.reloadData()

简单地替换该行代码

答案 2 :(得分:0)

也尝试以下操作:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
   rowIndex = indexPath.row          // declare a global variable
}

@IBAction func reomveButton(_ sender: Any) 
{
   self.array.remove(at: rowIndex)
   TableView.reloadData()
}

答案 3 :(得分:0)

小解释... 对于Swift 4,Swift 5 ... 首先声明类变量:

var indexForCell = Int()

然后使IBAction删除行:

@IBAction func removeRow(_ sender: Any) { 
    self.modelArray.remove(at: indexForCell)
    myTableView.reloadData()
}

更改索引变量的默认值以匹配indexPath:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    indexForCell = indexPath.row
}

最后,将操作添加到可重复使用的单元格按钮:

myRemoveButton.addTarget(self, action: #selector(self.removeRow), for: .touchDown)

这将使用myRemoveButton删除行的每个实例。