Как получить идентификатор JSON с помощью кнопки в ячейке табличного представления в swift4 - PullRequest
0 голосов
/ 25 августа 2018

Я использую ячейку tableView с именем кнопки удаления, и я хочу удалить мои данные JSON из tableView ячейки, которая мне нужна, чтобы идентификатор JSON удалял данные JSON из моего Tableview. Я использую, чтобы получить идентификатор JSON для этой indexPath в didSelect функции строки. но проблема в том, что я не могу получить JSON Id из этого indexPath без нажатия строки.

var selectedList: JSONList?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    selectedList = JSONList[indexPath.row]
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = Tableview.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? TableviewCell

    cell?.Numbers.text = JSONList[indexPath.row].Number

    cell?.Trash.addTarget(self, action: #selector(Deleting), for: .touchUpInside)


    cell?.selectionStyle = .none
    return cell!
}

//here is my delete function calling

func Deleting() {

let selectedListObj = selectedList
    print(selectedListObj!.id)
}

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Прежде всего установите тег для кнопки, которая будет в вашем случае строкой IndexPath, добавьте этот код в cellForRowAt:

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

Вам необходимо изменить deleting() функция должна быть @objc, поскольку селекторы после swift 3+ необходимы для добавления этого и добавления в него кнопки в качестве параметра:

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

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

}
0 голосов
/ 25 августа 2018

используйте замыкание для получения indexpath ячеек сенсорных кнопок.

обновить ячейку табличного представления ibaction и вызывать закрытие при каждом нажатии на кнопку корзины.

class FakeTableCell: UITableViewCell{

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

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

тогда мы можем получить indexpath ячейки в ячейке для строки для indexpath следующим образом

 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...