У меня есть ячейка 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
.