我有一个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
先谢谢。
答案 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")
注* - 由于我们没有将单元格出列,因此这个过程可能性能很小。