如何在swift中从按钮选项中删除tableview单元格?

时间:2021-04-10 10:23:21

标签: swift uitableview cell popover

我可以在单击按钮时删除 tableview 单元格..

但现在我需要从按钮选项中删除 tableview 单元格点击如下图 image how button shows options

在上图中,如果我单击按钮,我会显示一个 PopoverView,如果我单击删除,那么该 tableview 单元格应该删除,该怎么做?

代码:如果我喜欢下面的..当我点击点按钮然后只有单元格正在删除..但我想要当我点击按钮时popoverview应该从那个显示如果我选择删除然后要删除的单元格?怎么办?

@objc func deleteService(sender:UIButton){
    
    let servId = servicesArray[sender.tag].id
    let param = ["service_id" : servId]
    APIReqeustManager.sharedInstance.serviceCall(param: param as [String : Any], method: .post, loaderNeed: false, loadingButton: nil, needViewHideShowAfterLoading: nil, vc: self, url: CommonUrl.remove_requests, isTokenNeeded: true, isErrorAlertNeeded: true, isSuccessAlertNeeded: false, actionErrorOrSuccess: nil, fromLoginPageCallBack: nil) { [weak self] (resp) in
            if let code = ((resp.dict?["result"] as? [String : Any])){
                let success = code["status"] as? [String : Any]
                let message = success?["message"] as? String
                if message == "Success"{
                    let selectedIndex = sender.tag
                    self?.servicesArray.remove(at: selectedIndex)
                    DispatchQueue.main.async {
                       self?.servicesTableView.reloadData()
                     }
                }
            }else{
                self?.view.makeToast(CommonMessages.somethingWentWrong)
            }
        }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "ServicesTableViewCell", for: indexPath) as! ServicesTableViewCell
   
    cell.optionsBtn.tag = indexPath.row
    cell.optionsBtn.addTarget(self, action: #selector(deleteService(sender:)), for: UIControl.Event.touchUpInside)

    return cell
}

显示popover

extension PageContentViewController: PopoverViewDelegate {
func value(didSelect item: String, at index: Int, indexPath: IndexPath, sender: UIView) {
    if item == "View" {
        let vc = Helper.getVcObject(vcName: .ViewRequestDetailsViewController, StoryBoardName: .Requests) as! ViewRequestDetailsViewController
       self.checkAndPushPop(vc, navigationController: self.navigationController)
    } 
else if item == "Edit" {
    }else if item == "Delete" {
    // if i click delete i need to delete tableview cell
    }
}
}

如果我点击按钮弹出框,但是如果点击弹出框删除,我需要删除单元格,怎么办?

1 个答案:

答案 0 :(得分:0)

您需要先从 tableView 的数据源数组中删除要删除的项目,如下所示:

self?.servicesArray.remove(at: indexPath.item)

那么你应该能够做到这一点:

tableView.deleteRows(at: [indexPath], with: .fade)
相关问题