如何仅在特定索引路径下存储文本

时间:2018-09-25 04:53:16

标签: ios

我什么都没得到。

我需要将文本存储在特定的索引路径中。这意味着我有tableview。在tableviewcell中我有textfield。一旦我键入文本,但问题是在滚动tableview时,键入的文本显示在其他文本的texfield中电池。如何解决?

当前在ViewController中-

cellforrow索引我有按钮acton。tableviewcell代码在下面。

   func textFieldDidBeginEditing(_ textField: UITextField) {
       texttype.text = ""


    }
    func textFieldShouldClear(_ textField: UITextField) -> Bool
    {
               return true
    }

    func textFieldDidEndEditing(_ textField: UITextField) {

   self.TextAction(texttype)

    }

    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {


        return true;
    }



    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {

        return true;

    }

在cellforrow索引中:-

    cell.textadd = {[weak self] in

                if let i = self?.tableview.indexPath(for: $0) {


                    print("the selected text\(cell.textname ?? "")")

                    print(i)

                    print("the Selected button is \(cell.textname ?? "")")

                    print(i)
                    print(cell.textname)
                    print(indexPath.row)
                    print(indexPath.section)



                    let indexPath1 = self?.tableview.indexPath(for: $0)
                    let text1 = cell.texttype.text
                    print(text1)




                        let model = self?.questionViewModel.datafordisplay(atindex: indexPath1!)
                        //                    print(model?.values ?? "")
                        //

                        self?.questionViewModel.setData(atIndex: indexPath1!, text: text1!, Option: model!)


                        cell.setText(Options: model!)

                    if model?.values == "text"{
                      cell.texttype.text = ""

                    }                  else{
                    cell.texttype.text = text1
                    }


//                    let model = self?.questionViewModel.datafordisplay(atindex: indexPath)
//                    print(model?.values ?? "")
//                    
                     print("Section \(indexPath.section), Row : \(indexPath.row)")

                    let indexPath = IndexPath(row: indexPath.row, section:indexPath.section);
                    self?.tableview.selectRow(at: indexPath, animated: false, scrollPosition: UITableViewScrollPosition.none)

                    self?.tableView((self?.tableview)!, didSelectRowAt: indexPath)

                    }
                 print(cell.texttype.text ?? "")
                self?.u = 1
            }

那么如何存储文本字段的文本

1 个答案:

答案 0 :(得分:0)

您只需要override自定义UITableViewCell方法

override func prepareForReuse() {
    yourTextfield.text = nil
}

这将解决您的问题,但是当您滚动到上一个键入的单元格时,由于重复使用单元格,该单元格的textField的文本也设置为nil,因此这也会产生新的问题,因此您必须将该文本存储在模型中并重新分配通过安全地展开可选文本来cellForRow方法