Значения текстового поля удалены при прокрутке таблицы? - PullRequest
0 голосов
/ 25 мая 2020

У меня есть ячейка tableview с текстовым полем, но когда я добавляю новую строку и прокручиваю tableview вверх или вниз, значения текстового поля исчезают. Я провожу много исследований по предыдущему вопросу об этом в 2015 году, и на него нет правильного ответа. Как я могу исправить эту проблему? Как я могу использовать метод делегата текстового поля, если он работает для этого? Вот мой код:

var i = 0

while i <= taskArrForRead.count {
  let indexPath = IndexPath(row: i, section: 0)
  let cell = self.tableView.cellForRow(at: indexPath) as? taslakDuzenlemeCell

  if let item = cell?.taslakTextField.text! {
    arrayOfNames.append(item)
  }
  i = i + 1
}

В этом коде я получаю все значения текстовых полей из tableview, но если прокрутка tableview исчезла, значения меняются на значения по умолчанию. Как я могу это исправить? Спасибо.

Вот мой код tableview:

extension taslakOlusturmaController: UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return taskArrForRead.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "taslakCell", for: indexPath) as! taslakDuzenlemeCell

        cell.taslakTextField.text = taskArrForRead[indexPath.item]
        cell.taslakTextField.delegate = self
        return cell
    }

    func textFieldDidEndEditing(_ textField: UITextField) {
        print(textField.text!)
        self.arrayOfNames.append(textField.text!)
    }

    func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        let cell = tableView.dequeueReusableCell(withIdentifier: "taslakCell", for: indexPath) as! taslakDuzenlemeCell
        cell.taslakTextField.text = taskArrForRead[indexPath.item]
        print(arrayOfNames[indexPath.item])
    }
}

С помощью метода textfield delegate я могу получить удаленные значения текстового поля, но я не могу вернуть его снова в текстовое поле. Пользователь не может видеть значение после повторной прокрутки, также я могу получить удаленные значения с помощью метода didEndDisplaying cell.

1 Ответ

0 голосов
/ 25 мая 2020

Вы можете использовать метод PrepareForReuse, чтобы вернуть текст обратно при повторном создании ячейки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...