Я хотел бы сохранить UITextField.text
в массиве, а затем извлечь строки в ячейки с текстовым полем, в котором я набирал текст ранее.
Я уже пытался сохранить введенный текст в массив, и это, кажется, работает.
goalsCellEntries
это массив.
Я использую эту функцию для изменения значений в массиве, и это, кажется, работает, потому что в консоли значения массива меняются! Функция связана с TextField через событие «Редактирование завершено»:
@IBAction func goalsTextChangeDidEnd(_ sender: UITextField) {
if let indexPath = self.goalsTableView.indexPathForView(sender){
goalsCellEntries[indexPath.row].text = sender.text!
print(goalsCellEntries)
}
}
Затем я вызываю эту функцию в функции cellForRowAt
, чтобы при повторном использовании ячейки использовалась обновленная версия строки массива:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == scheduleTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "scheduleCell", for: indexPath) as! scheduleTableViewCell
cell.scheduleStartTimeField.text = scheduleCellEntries[indexPath.row].time01
cell.scheduleEndTimeField.text = scheduleCellEntries[indexPath.row].time02
cell.scheduleTextField.text = scheduleCellEntries[indexPath.row].text
if scheduleCellEntries[indexPath.row].timeButtonState == false{
cell.scheduleDateCheckBox.isSelected = false
}else{
cell.scheduleDateCheckBox.isSelected = true
}
if scheduleCellEntries[indexPath.row].textButtonState == false{
cell.scheduleTextCheckBox.isSelected = false
}else{
cell.scheduleTextCheckBox.isSelected = true
}
return cell
} else if tableView == goalsTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "goalsCell", for: indexPath) as! goalsTableViewCell
cell.goalsTextField.text = goalsCellEntries[indexPath.row].text
goalsTextChangeDidEnd(cell.goalsTextField)
if goalsCellEntries[indexPath.row].buttonState == false{
cell.goalsCheckBox.isSelected = false
}else{
cell.goalsCheckBox.isSelected = true
}
if goalsCellEntries[indexPath.row].buttonState == false{
cell.goalsCheckBox.isSelected = false
}else{
cell.goalsCheckBox.isSelected = true
}
return cell
} else if tableView == toDoTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "toDoCell", for: indexPath) as!toDoTableViewCell
cell.toDoTextField.text = toDoCellEntries[indexPath.row].text
if toDoCellEntries[indexPath.row].buttonState == false{
cell.toDoCheckBox.isSelected = false
}else{
cell.toDoCheckBox.isSelected = true
}
if toDoCellEntries[indexPath.row].buttonState == false{
cell.toDoCheckBox.isSelected = false
}else{
cell.toDoCheckBox.isSelected = true
}
return cell
} else /*if tableView == motivationTableView*/ {
let cell = tableView.dequeueReusableCell(withIdentifier: "motivationCell", for: indexPath) as! motivationTableViewCell
cell.motivationImage.image = #imageLiteral(resourceName: "placeholderImage")
cell.motivationTextField.text = "Write your Motivation here!"
return cell
}
}
Но когда я прокручиваю tableView и ячейки перерабатываются, UITextField.text
возвращается к значению по умолчанию.