gpt4 book ai didi

ios - 通过单击单元格中的取消按钮删除该单元格,并通过 editActionsForRowAt 方法删除单元格

转载 作者:可可西里 更新时间:2023-11-01 01:07:23 25 4
gpt4 key购买 nike

使用 UITableView 编辑方法它工作正常,但是使用 UIButton 它不起作用。

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let deleteAction = UITableViewRowAction(style: .normal, title: "Delete") { (deleteAction, indexPath) in
deleteApm(Id: myString)
self.AArrayList.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
}
return [deleteAction]
}

func deleteApm(Id:String)
{
//...................................
}

@IBAction func myButt(_ sender: UIButton) {
let cancelBtn = sender.tag
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "ACell", for: indexPath) as! ATableViewCell
cell.cancelBtn.addTarget(self, action: #selector(self.myButt(_:)), for: .touchUpInside)
return cell
}

使用此方法我在按钮中调用了相同的删除方法,但使用 UIButton 删除不起作用。使用 UITableView 它工作正常...

最佳答案

在 cellforRow 中为您的按钮添加标签,以标识行或特定对象

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "ACell", for: indexPath) as! ATableViewCell
cell.cancelBtn.tag = indexPath.row
cell.cancelBtn.addTarget(self, action: #selector(self.myButt(_:)), for: .touchUpInside)
}

并将 Action 处理为

@IBAction func myButt(_ sender: UIButton) {
let indexPath: IndexPath = IndexPath(row: sender.tag, section: 0)
deleteApm( currentIndexpath: indexPath)

}

以及调用中的 deleteRow

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let deleteAction = UITableViewRowAction(style: .normal, title: "Delete") { (deleteAction, indexPath) in
self.deleteApm(currentIndexpath: indexPath)
}
return [deleteAction]
}

最后创建删除api调用的常用方法

func deleteApm(currentIndexpath: IndexPath )    {
let jsonDict = self.ArrayList[currentIndexpath.row] as? [String:Any]
let Id:Int = jsonDict?["appointId"] as! Int
let Id2 : Int = jsonDict?["appointId"] as! Int
let param : [String : String] = ["pid": {String(Id2)}()]
let headers = ["Content-Type": "application/x-www-form-urlencoded"]
// "http://192.168.1.45:8080/zybrodental/patientApp/patientAppDeleteMultipleAppointment"

Alamofire.request(APIMetadata.URL_DELETE_APPOINT, method: .post, parameters: param, encoding: URLEncoding.httpBody, headers: headers).responseJSON { (response:DataResponse<Any>) in

switch(response.result) {
case.success(let data):
print("success",data)
self.ArrayList.remove(at: currentIndexpath.row)
self.yourtableViewName.deleteRows(at: [currentIndexpath], with: .fade)

case.failure(let error):
print("Not Success",error)
}
}
}

关于ios - 通过单击单元格中的取消按钮删除该单元格,并通过 editActionsForRowAt 方法删除单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55569065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com