如何在Swift4的TableView单元格中使用按钮获取JSON ID

时间:2018-08-25 08:54:02

标签: ios iphone swift

我正在使用具有删除按钮名称的tableView单元格,我想从我需要的tableView单元格中删除JSON数据,以便从我的{{1 }}。我用来在Tableview行函数中获取该indexPath的JSON ID。但是问题是我不按该行就无法从该didSelect获取JSON ID。

indexPath

2 个答案:

答案 0 :(得分:2)

首先将标签设置为按钮,在您的情况下 IndexPath的行中,将此代码添加到cellForRowAt中:

cell?.Trash.addTarget(self, action: #selector(deleting(_:)), for: 
.touchUpInside)
cell?.Trash.tag = indexPath.row

由于选择器,您需要将deleting()函数修改为@objc 快速3+之后,必须添加该按钮并将按钮作为参数添加到其中:

@objc private func deleting(_ button:UIButton){

    // here you got the object
    let selectedObject = JSONList[button.tag]

}

答案 1 :(得分:0)

使用闭包获取被点击的按钮单元格的索引路径。

使用ibaction更新表格视图单元格,并在每次点击垃圾箱按钮时调用闭包。

class FakeTableCell: UITableViewCell{

  var selectedCell: ((UITableViewCell) -> ())?

  @IBAction func trashButtonTapped(){
    selectedCell?(self)
  }
} 

然后我们可以获取单元格中用于索引路径的单元格的索引路径,如下所示:

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = FakeTableCell()
    cell.selectedCell = { selectedCell in
        if let ip = tableView.indexPathForRow(at: selectedCell.center){
            self.deleteData(with: ip.row)
        }
    }
    return cell
}


 func deleteData(with row: Int){
    // get the object by JSONList[row]
    let item = JSONList[row]
    // perform deletion
}