【发布时间】:2019-05-14 19:49:54
【问题描述】:
更新: 所以这样做的目标是保存用户在单元格中的 UITextView 中输入的文本,以便为该特定单元格编号保存文本,并且不会复制、移动或删除文本。
按照建议,我正在尝试通过执行以下操作来处理自定义单元格内的 textViewdidChange 函数:
var onTextEntered: ((String?) -> ())!
func setup() {
notesTextView.delegate = self
}
func textViewDidChange(_ textView: UITextView) {
onTextEntered(notesTextView.text)
}
制作一个包含文本的字符串,然后在每次调用 textViewDidChange 时将文本添加到字符串中(在我们进行过程中尝试向自己解释这一点,所以如果我的解释需要,请纠正我)。
CellForRowAt 中的下一步
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = "TableViewNotesCell"
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! TableViewNotesCell
cell.setup()
cell.onTextEntered = {input in
if let text = input {
self.cellText[indexPath.row] = text // here is the error (index out of range)
}
if indexPath.row < self.cellText.count {
cell.notesTextView.text = self.cellText[indexPath.row] ?? "placeholder"
}
}
return cell
}
当我执行上述代码时,只要调用 textViewDidChange(当我在 textView 中键入单个字母或数字时),我就会收到错误:“致命错误:索引超出范围”在我使用的行上cellText[indexPath.row] = 文本数组。如果我对过程的理解有误,请帮助或让我知道很想学习!
【问题讨论】:
-
我不明白你最终想要实现什么。您能否更清楚地解释您想要完成的具体目标是什么?
-
是的:正如问题中所说,我有这个 tableViewController 的 3 个功能,其中一个不工作。 tableViewcontroller 我正在尝试创建一个 tableViewController,它在每个单元格中都有一个按钮和一个 textView,并具有以下功能: 1. 当工具栏中的条形按钮项目被按下时添加一个单元格(工作)当按钮被按下时,textView 变得不可编辑并选中标记向上和向下滚动单元格(即出列单元格)时出现在按钮顶部(工作),具有用户输入的单元格将单元格保存到 indexPath.row,从而将文本保存到 indexPath(不工作)
-
我需要将 textView 的文本保存在单元格内,然后在再次显示(或出列)时将其添加到首先包含文本数据的单元格中。
-
您只需复制并粘贴您的原始帖子。例如,“将单元格保存到 indexPath.row”之类的事情是没有意义的。您要做的只是从单元格中获取输入并将其添加到视图控制器中的某个集合中吗?
-
我这样做的原因是,当我上下滚动用户输入重复的单元格时,会被删除或出现在不同的位置。所以我的解决方案是添加来自单元格内的 textView 的文本输入,将其保存在一个数组中,然后当单元格显示或出列时,如果它是正确的 indexPath 的单元格,它只会添加文本