【问题标题】:How to access textview value which is inside tableview cell in swift 5?如何访问swift 5中tableview单元格内的textview值?
【发布时间】:2020-04-24 18:21:54
【问题描述】:

我有一个视图控制器,里面有一个表格视图和 2 个保存和取消按钮。 在 tableview 单元格中,我有一个 textview。在 textview 中添加一些文本后,我想显示该文本。我不确定如何在单击保存按钮时获取该表格视图文本。 (行数可能是动态的)。

    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 ")
   }

除了单击按钮之外,我还想将多个文本视图中的所有文本添加到一个字符串中。 是否有任何干净和最佳的方法来实现这一目标?

感谢您的帮助!

【问题讨论】:

  • 由于您从模型中填充文本视图,因此您必须实现一个逻辑,当单元格中的文本更改时更新模型。否则滚动会导致意外行为。在btnSave 中从模型中获取数据,而不是从视图中。
  • @vadian 谢谢..但只想显示我从 textviews 获得的文本.. 如果您现在不考虑模型,它可以。我更新了我的问题
  • 考虑模型是至关重要的。正如我所说,如果您不更新模型,滚动将无法正常工作。

标签: ios swift tablecell


【解决方案1】:

您需要获取要获取其文本的单元格的 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
        }
    }

如果您有多个带有文本字段的单元格,您可以循环获取所有字段

  @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)
}

但请记住,这种方法仅适用于可见单元格,否则对于不可见单元格,您将得到 nil

我建议您在每个具有textView 的单元格中实现 textView:shouldChange,并委托给 tableView 的 viewController。当单元格中的文本发生更改时,委托应将更改传播到视图控制器,视图控制器会将值保存在变量中。

然后,当您按下保存按钮时,您只需从变量中获取值。

【讨论】:

  • 谢谢,但是如何得到那个..通过使用你的答案不清楚..在 indexpath 上给出错误。你能详细说明一下吗
  • 立即查看答案
猜你喜欢
  • 1970-01-01
  • 2021-11-17
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多