繁体   English   中英

从tableview删除特定部分后,如何在tableview中隐藏部分?

[英]How to hide the sections in the tableview after deleting a particular section from tableview?

我有三个部分( 请参见图像 ),其中一个部分用于显示项目,其余的两个单元格现在通过使用流线板设计,如果我在第一部分中使用删除按钮删除了所有项目,则其余两个部分需要隐藏并显示一些文本,谁能帮助我该怎么做?

func numberOfSections(in tableView: UITableView) -> Int{
    // #warning Incomplete implementation, return the number of sections
    return 3
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
    if (section == 0){
        return itemsArray.count
    }else{
        return 1
    }
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if indexPath.section == 0{
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! productTableViewCell
        tableDetails.isHidden = false
        myActivityIndicator.stopAnimating()
        let arr = itemsArray[indexPath.row]
        let urls = NSURL(string: arr["img"] as! String)
        let data = NSData (contentsOf: urls! as URL)
        cell.imageview.image = UIImage(data: data! as Data)
        cell.nameLabel.text = arr["productName"]as! String
        var price = arr["productPrice"] as! String
        print(price)
        var Quantity : Float = 1
        let itemId : Int =  arr["sku"] as! Int
        print(itemId)
        for aDic in CartArray{
            if aDic["id"] == String(itemId){

                Quantity = Float(String(aDic["quantity"]!))!
            }
        }
        print(CartArray)
        cell.stepper.value = Double(Int(Quantity))
        cell.stepper.tag = indexPath.row
        cell.stepper.addTarget(self, action: #selector(stepperValueChange(stepper:)), for:.valueChanged)
        price = price.replacingOccurrences(of: "KD", with: "")
        cartstring = String(Float(price)! * Quantity) + "0KD"
        cell.priceLabel.text = cartstring
        let quantityText = String(Quantity)
        let endIndex = quantityText.index(quantityText.endIndex, offsetBy: -2)
        let truncated = quantityText.substring(to: endIndex)
        cell.quantityTextField.text = truncated
        cell.price = price
        cell.deleteButton.addTarget(self, action: #selector(deleteButtonAction(button:)), for: .touchUpInside)
        cell.deleteButton.tag = indexPath.row
        return cell
    }else if indexPath.section == 1{
        let cell = tableView.dequeueReusableCell(withIdentifier: "couponcell", for: indexPath) as! CouponTableViewCell
        cell.applyButton.addTarget(self, action: #selector(applyButtonAction(button:)), for: .touchUpInside)
        return cell
    }else {
        let cell = tableView.dequeueReusableCell(withIdentifier: "checkout", for: indexPath) as! checkoutTableViewCell
        cell.finalCartpriceLabel.text = total
        return cell
    }
}
func deleteButtonAction(button : UIButton) {
        let buttonPosition = button.convert(CGPoint(), to: tableDetails)
        let index = tableDetails.indexPathForRow(at: buttonPosition)
        self.itemsArray.remove(at: (index?.row)!)
        self.tableDetails.deleteRows(at: [index!], with: .automatic)
        tableDetails.reloadData()
     }

您可以仅在func numberOfSections(in:)检查self.itemsArray.count > 0并显示此情况的所有三个部分。 否则,仅返回第一部分,这将自动隐藏其他两个部分。

例:

func numberOfSections(in tableView: UITableView) -> Int {
    if self.itemsArray.count > 0 {
        return 3
    }
    return 1
}

使用以下命令修改您的numberOfSections

func numberOfSections(in tableView: UITableView) -> Int {
    if self.itemsArray.count > 0 {
        return 3
    }
    //Show Message List is Empty
    return 1
}

您可以管理类似

  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
if (section == 0){
    return itemsArray.count
}else{


    if self.itemsArray.count == 0 {
    return 0
   }
   else{
        return 1
     }
}

 }

在numberOfSection数据源方法中,检查itemArray是否没有元素,仅返回一个部分。 在cellForRowAtIndexPath中,再次检查相同的条件,并在其中显示空文本。

func numberOfSections(in tableView: UITableView) -> Int {
    if(itemArray.count > 0)
    {
      if (section == 0){
        return itemsArray.count
      }else{
        return 1
      }
    } else {
       return 1;
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if(itemArray.count > 0)
    {
    }else {
       //Show empty text view
    }
}

这段代码非常适合我

func deleteButtonAction(button : UIButton) {
        let buttonPosition = button.convert(CGPoint(), to: tableDetails)
        let index = tableDetails.indexPathForRow(at: buttonPosition)
        self.itemsArray.remove(at: (index?.row)!)
        self.tableDetails.deleteRows(at: [index!], with: .automatic)
        tableDetails.reloadData()
        if (tableView(tableDetails, numberOfRowsInSection: 0) == 0){
            tableDetails.isHidden = true
        }
        if (tableDetails.isHidden == true){
            self.loadingLabel.textColor = UIColor.gray
            self.loadingLabel.textAlignment = NSTextAlignment.center
            self.loadingLabel.text = "Your shopping cart is empty"
            self.loadingLabel.frame = CGRect(x: 130, y: 320, width: 140, height: 30)
            view.addSubview(loadingLabel)
            }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM