Jez
Jez

Reputation: 29

How to reload data from custom view cell?

i have

class CartViewController: UIViewController,UITableViewDataSource,UITableViewDelegate

and

class CartTableViewCell: UITableViewCell

How to update CartViewController from CartTableViewCell file

class CartTableViewCell: UITableViewCell {
@IBAction func buttonDeleteAction(_ sender: UIButton) {
    let url = "http://aaaaaa/cart/"+label.text!+"/del"
    let headers: HTTPHeaders = ["Accept":"application/json","Authorization":"Bearer "+token!]
    Alamofire.request(url, method: .get, headers: headers).responseJSON { response in
        switch response.result {
        case .success(let value):
            let json = JSON(value)
            print("delete json ",json)
            let success = json["success"].boolValue
            print(success)
            if success == true{
                //UPDATE CARTVIEWCONTROLLER
            }
        case .failure(let error):
            print(error)

        }

    }
}

I looked for similar problems on the Internet but I did not find a suitable explanation

Upvotes: 0

Views: 64

Answers (1)

Shehata Gamal
Shehata Gamal

Reputation: 100503

You need a protocol

protocol ReloadManager {
  func callReload(cell:CartTableViewCell) 
}

//

class CartViewController: UIViewController,UITableViewDataSource,UITableViewDelegate,ReloadManager {

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

      let cell = tableView.dequeueReusableCell(withIdentifier:"id") as! CartTableViewCell

      cell.delegate = self

    }
    func callReload(cell:CartTableViewCell) {

       cartsTableView.reloadData()

       // use cell if you want to get indexpath to remove item from the table
    }

}

//

class CartTableViewCell: UITableViewCell {
   var delegate:ReloadManager?
   func btnClicked(_ sender:UIButton){
      delegate?.callReload(cell:self)
   }

}

Upvotes: 1

Related Questions