我面临动态细胞问题,根据我的药物时间选择创建多个Textfield。当我根据我的文本字段创建选择药物时间时,如果我取消选择药物时间,文本字段应该从uiTableview细胞中移除,这是正常工作。我在滚动我的tableview时遇到的问题,因为第一个文本字段值被复制到第5个文本字段,反之亦然。同时在删除textfiled时,值会被复制
UITableViewDelegate ,UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if timeArray.count > 0 {
return timeArray.count
} else {
return 0
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: AddMedicationTableViewCell = medicineTimeTableView.dequeueReusableCell(withIdentifier: "AddMedicationTimeCell",for:indexPath as IndexPath) as! AddMedicationTableViewCell
cell.quantityTextField.delegate = self
if timeArray.count > 0 {
cell.timeLabel.text = timeArray[indexPath.row]
cell.quantityTextField.keyboardType = .decimalPad
// cell.quantityTextField.delegate = self
// let subViews = cell.contentView.subviews
// for subview in subViews
// {
// if (subview is UITextField)
// {
// subview.removeFromSuperview()
// }
// }
if arrayofTextField.indices.contains(indexPath.row)
{
cell.quantityTextField = arrayofTextField[indexPath.row ]
} else {
cell.quantityTextField.text = dataList[indexPath.row]
cell.quantityTextField.tag = indexPath.row
arrayofTextField.append(cell.quantityTextField)
}
cell.selectionStyle = .none
return cell
}
//删除代码
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
let deSelectedCell = collectionView.cellForItem(at: indexPath)
label?.textColor = UIColor(rgb:0x58595B)
let label1 = cell.viewWithTag(3000+indexPath.row) as? UILabel
if label1?.tag != nil {
timeSelected = checkTimeSelected((label1?.tag)!)
for eachTime in timeArray {
if eachTime == timeSelected {
if let index = timeArray.index(of: eachTime) {
timeArray.remove(at: index)
timingsArry.remove(at: index)
dataList[index] = ""
arrayofTextField.remove(at: index)
medicineTimeTableView.reloadData()
}
}
}
答案 0 :(得分:0)
这是因为您正在使用dequeueReusableCell
重用其他单元格。
在AddMedicationTableViewCell
我建议您使用:
override func prepareForReuse() {
super.prepareForReuse()
}
将单元格重置为基本。
答案 1 :(得分:0)
你应该在gloabl上有一个字符串初始化数组。
gitlab-ci.yml
在您的数据源 cellForRowAtIndexPath
中设置
var textValues = [String]()
在视图控制器中 TextField委托。
textField.tag = indexPath.row
cell.textField.text = textValues[indexPath.row]