Могу ли я сохранить строку из TextField в tableViewCell в массив, а затем снова использовать этот массив, чтобы рассмотреть его строки в текстовом поле? - PullRequest
0 голосов
/ 10 мая 2019

Я хотел бы сохранить 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 возвращается к значению по умолчанию.

...