具有多个文本字段的UiTableview的Scrollview显示从一个到另一个的复制值

时间:2018-04-12 08:00:07

标签: ios swift uitableview uiscrollview uitextfield

我面临动态细胞问题,根据我的药物时间选择创建多个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()
                    }
                }
            }

2 个答案:

答案 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]