我想在swift中删除uibutton操作中的UITableView
行。
答案 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)
}
将此按钮的IBAction
与touchUpInside
操作相关联。确保先从数据源中删除元素,然后将其从表格视图中删除。
如果您不想动画删除行,可以使用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删除行的每个实例。