代码之家  ›  专栏  ›  技术社区  ›  Jez

如何从自定义视图单元重新加载数据?

  •  0
  • Jez  · 技术社区  · 6 年前

    我有

    class CartViewController: UIViewController,UITableViewDataSource,UITableViewDelegate
    

    class CartTableViewCell: UITableViewCell
    

    如何更新 CartViewController 从…起 CartTableViewCell 文件

    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)
    
            }
    
        }
    }
    

    我在网上寻找类似的问题,但没有找到合适的解释

    1 回复  |  直到 6 年前
        1
  •  1
  •   Shehata Gamal    6 年前

    你需要一个协议

    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)
       }
    
    }