2017-07-05 44 views
0
func numberOfSections(in tableView: UITableView) -> Int { 
     if carts.count > 0 { 
      self.tableView.backgroundView = nil 
      self.tableView.separatorStyle = .singleLine 
      return 1 


     } 

     let rect = CGRect(x: 0, 
          y: 0, 
          width: self.tableView.bounds.size.width, 
          height: self.tableView.bounds.size.height) 
     let noDataLabel: UILabel = UILabel(frame: rect) 

     noDataLabel.text = "nothing, the table is empty" 
     noDataLabel.textColor = UIColor.white 
     noDataLabel.textAlignment = NSTextAlignment.center 
     self.tableView.backgroundView = noDataLabel 
     self.tableView.separatorStyle = .none 
     self.total.isHidden = true 
     self.proceedbtn.isHidden = true 
     self.totalLab.isHidden = true 


     return 1 
    } 

上面的代碼會在tableView爲空時隱藏對象。但是,當我添加物品(它應該是一個購物車)totalproceedbtntotalLab仍然隱藏!當UITableView爲空時隱藏UIButtons

有沒有辦法重新加載表並檢查它是否爲空?

注意:

我的細胞可以滑動,我可以通過滑動刪除細胞。

func deleteMail(_ path:IndexPath) { 
    guard carts.count > path.row else { 
     print("Index out of range") 
     return 
    } 

    let entry = carts[path.row] 
    deletItem(id: entry.meal_id)// call api to delete items 
    carts.remove(at: (path as NSIndexPath).row); 
    tableView.deleteRows(at: [path], with: .left); 
    print("delete") 

} 

UPDATE

override func viewDidLoad() { 
    super.viewDidLoad() 

    if carts.isEmpty == true { 

     proceedbtn.isHidden = true 
    } else { 
     if carts.isEmpty == false { 
      if proceedbtn.isHidden == true { 


      proceedbtn.isHidden = false 
     } 
    } 
    } 

獲取數據:

func getData() { 


    Alamofire.request(url!, method: .post, parameters: param,encoding: URLEncoding.default, headers: headers).responseJSON { response in 
     if let value: AnyObject = response.result.value as AnyObject? { 
     // get data 

       self.price = subJson["price"].stringValue 
       self.qty = subJson["qty"].stringValue 
       let id = subJson["id"].stringValue 

       self.id = id 
       self.name = subJson["meal"]["name"].stringValue 


       let info = Cart(meal_id: self.id, qty: self.qty, meal_name: self.name, price: self.price) 

       self.carts.append(info) 
      } 

     } 
     self.tableView.reloadData() 

    } 

} 
+0

的計數可能你顯示/告訴我們您用來添加項目的代碼? –

+0

檢查更新的問題請 – leo0019

回答

1

基於cards數組計數啓用/禁用按鈕。

func numberOfSections(in tableView: UITableView) -> Int { 

     self.total.isHidden = carts.isEmpty 
     self.proceedbtn.isHidden = carts.isEmpty 
     self.totalLab.isHidden = carts.isEmpty 

     if carts.count > 0 { 
      self.tableView.backgroundView = nil 
      self.tableView.separatorStyle = .singleLine 
      return 1 


     } 

     let rect = CGRect(x: 0, 
          y: 0, 
          width: self.tableView.bounds.size.width, 
          height: self.tableView.bounds.size.height) 
     let noDataLabel: UILabel = UILabel(frame: rect) 

     noDataLabel.text = "nothing, the table is empty" 
     noDataLabel.textColor = UIColor.white 
     noDataLabel.textAlignment = NSTextAlignment.center 
     self.tableView.backgroundView = noDataLabel 
     self.tableView.separatorStyle = .none 

     return 1 
    } 

雖然通過滑動刪除單元格:

您必須禁用按鈕,同時刪除車表視圖細胞,通過檢查carts陣列

func deleteMail(_ path:IndexPath) { 
    guard carts.count > path.row else { 
     print("Index out of range") 
     return 
    } 

    let entry = carts[path.row] 
    deletItem(id: entry.meal_id)// call api to delete items 
    carts.remove(at: (path as NSIndexPath).row); 

     //You have to disable the button while delete the cells from cart table view 
     if (carts.isEmpty) { 
     self.total.isHidden = true 
     self.proceedbtn.isHidden = true 
     self.totalLab.isHidden = true 
     } 

    tableView.deleteRows(at: [path], with: .left); 
    print("delete") 

} 
+0

工作!謝謝。如何訪問視圖並且購物車已空?我試圖在viewDidLoad中實現'if cart.isEmpty',但沒有工作 – leo0019

+0

當您打開視圖時,請檢查'carts.isEmpty'。並確保您的陣列已分配 – Subramanian

+0

嘗試過,但它隱藏按鈕和標籤,即使購物車不是空的 – leo0019

0

聽起來像是你想要的東西就像一個

func cartsDidUpdate() { 
    let cartIsEmpty = carts.isEmpty 
    total.isHidden = cartIsEmpty 
    proceedbtn.isHidden = cartIsEmpty 
    totalLab.isHidden = cartIsEmpty 
    // Also any other UI-style logic based on cart being empty 
} 

,你可以調用,你有print("delete"),並且可以從任何地方添加新購物車。

+0

購物車是空的,所有的用戶界面都不隱藏 – leo0019

+0

對不起,我不確定我關注。 我描述的邏輯使用這樣一個事實,即你的tableView的內容應該基於某個全局源。在你的情況下,來源是'推車',對嗎?同樣,您希望按鈕的外觀基於同一個源。而不是讓你的按鈕檢查你的表格中的單元格數量,你應該根據「carts」是否爲空來隱藏它們。方便的是,Apple提供了'.isEmpty'功能來提供這些信息。 – tbogosia