TableViewCell在滚动期间重复多个Editext值

时间:2018-01-21 04:55:39

标签: ios swift

我有一个tableview,每个单元格的三个edittext并排放置。我想从用户界面给出输入,并在我点击Button后给出所有值,然后进行一些数学计算以得到结果。

但滚动表视图时,edittext值会重复出现。这是我的代码段。

import UIKit

class Density_Price_Calculation_TableView: UIViewController , UITableViewDelegate , UITableViewDataSource {
    @IBOutlet weak var Density_Price_Calculation_TableView: UITableView!    
    @IBOutlet weak var Gravity: UILabel!
    @IBOutlet weak var Price: UILabel!

    var phreditText = [String]()
    var densityeditText = [String]()
    var priceeditText = [String]()
    var ArrayOfCell = [Density_Price_Calculation_TableViewCell]()

    override func viewDidLoad() {
        super.viewDidLoad()
        Density_Price_Calculation_TableView.delegate = self
        Density_Price_Calculation_TableView.dataSource = self
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return Density_Price_Chemicals_MasterData.instance.getChemical_Names().count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell : Density_Price_Calculation_TableViewCell = tableView.dequeueReusableCell(withIdentifier: "density_price_calculation_cell", for: indexPath) as! Density_Price_Calculation_TableViewCell
        let chemical_names = Density_Price_Chemicals_MasterData.instance.getChemical_Names()[indexPath.row]
        cell.updateViews(chemical_names: chemical_names)
        ArrayOfCell.append(cell)
        return cell
    }

    @IBAction func btn_pressed(_ sender: UIButton) {
        var totalSize=0.00, gravity=0.0,price=0.0

        for cell in ArrayOfCell
        {
            totalSize=totalSize + (Double(cell.phreditText.text ?? "") ?? 0)
            let tempPhr=Double(cell.phreditText.text ?? "") ?? 0
            let tempDen=Double(cell.densityeditText.text ?? "") ?? 0
            let tempPrice=Double(cell.priceeditText.text ?? "") ?? 0
            if(tempPhr != 0 && tempDen != 0)
            {
                gravity=gravity + tempPhr/tempDen
            }

            price = price + (tempPhr*tempPrice)  
        }

        Gravity.text = String (format : "%.3f",(Double(totalSize/gravity)))
        Price.text = String (format : "%.3f",(Double(price/totalSize)))  
   }
}

我的TableviewCell内容

import UIKit

class Density_Price_Calculation_TableViewCell: UITableViewCell {
    @IBOutlet weak var chemical_name: UILabel!
    @IBOutlet weak var phreditText: UITextField!
    @IBOutlet weak var densityeditText: UITextField!
    @IBOutlet weak var priceeditText: UITextField!

    func updateViews(chemical_names:Density_Price_Calculation) {
        chemical_name.text = chemical_names.chemical_name
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        // Dismiss the keyboard when the view is tapped on
        phreditText.resignFirstResponder()
        densityeditText.resignFirstResponder()
        priceeditText.resignFirstResponder()   
    }   
}

TableView Each Cell Content Image for referrence

先谢谢。

1 个答案:

答案 0 :(得分:0)

这可能是因为您在cellForRowAt出列表格视图单元格并在ArrayOfCell中保持相同,并且由于出列引用,可能会发生此问题。<登记/> 所以尝试以下更改, 而不是

let cell : Density_Price_Calculation_TableViewCell = tableView.dequeueReusableCell(withIdentifier: "density_price_calculation_cell", for: indexPath) as! Density_Price_Calculation_TableViewCell

尝试使用,

let cell = Density_Price_Calculation_TableViewCell(style: .default, reuseIdentifier: "density_price_calculation_cell")

注* - 由于我们没有将单元格出列,因此这个过程可能性能很小。