Как получить доступ к значению textview, которое находится внутри ячейки таблицы в Swift 5? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть один viewcontroller, внутри которого у меня есть одно представление таблицы и 2 кнопки сохранения и отмены. В ячейке tableview у меня есть один textview. после добавления текста в textview я хочу показать этот текст. Я не уверен, как получить этот табличный текст при нажатии кнопки сохранения. (количество строк может быть динамическим c).

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

                if let cell = tableview.dequeueReusableCell(withIdentifier: "SummaryManualEditContentCell", for: indexPath) as? SummaryManualEditTableCell {


                    cell.txtAnswers.text = "enter text here"

                    return cell
                }
            return UITableViewCell()
        }

@IBAction func btnSave(_ sender: Any) {
        print("textviewText1 + textviewText2 + and so on ")
   }

В дополнение к этому при нажатии кнопки я хочу добавить весь этот текст несколькими текстовыми представлениями в одну строку. Есть ли какой-нибудь чистый и лучший способ достичь этого?

Спасибо за помощь!

1 Ответ

1 голос
/ 24 апреля 2020

Вам нужно получить indexPath ячейки, текст которой вы хотите получить, получить ячейку для этого indexpath, например,

@IBAction func btnSave(_ sender: Any) {
      let indexPath = IndexPath(row: 0, section: 0)
      if let cell = tableView.cellForRow(at: indexPath) as? SummaryManualEditTableCell {
        let text = cell.txtAnswers.text
        }
    }

И если у вас есть несколько ячеек с textFields, вы можете l oop примерно получить все поля

  @IBAction func btnSave(_ sender: Any) {
var allTextViewsText = ""
       for i in 0...5{
          let indexPath = IndexPath(row: i, section: 0)
          if let cell = tableView.cellForRow(at: indexPath) as? SummaryManualEditTableCell {
            allTextViewsText += cell.txtAnswers.text
            }
        }
  print(allTextViewsText)
}

Но имейте в виду, что этот подход работает только в случае видимых ячеек, в противном случае для невидимых ячеек вы получите ноль

Я предложу вам реализовать textView : shouldChange в каждой ячейке, которая имеет textView с делегатом для viewController tableView. Когда в ячейке изменяется текст, делегат должен передать это изменение в viewController, который сохранит значение в переменной.

Затем, когда вы нажмете кнопку сохранения, вы просто получите значения из переменных.

...