gpt4 book ai didi

swift - TableViewController问题: won't save user input from textView

转载 作者:行者123 更新时间:2023-11-30 10:57:39 26 4
gpt4 key购买 nike

更新:因此,这样做的目标是保存用户在单元格中的 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中输入单个字母或数字时),我就会收到错误:“ fatal error :索引超出范围”在我使用的行上cellText 数组[indexPath.row] = 文本。如果我对过程的理解有误,请帮助或告诉我,我很乐意学习!

最佳答案

您可以尝试保存每次编辑

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

// inside cellForRowAt

cell.textView.delegate = self

cell.textView.tag = indexPath.row

return cell
}

@objc func textViewDidChange(_ tex: UITextView) {

cellEndEdit[tex.tag] = tex.text!

}

class VC:UIViewController,UITextViewDelegate {
<小时/>

为数组指定默认值

 var cellEndEdit = [String](repeating: "", count: numberOfRows)

关于swift - TableViewController问题: won't save user input from textView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53764507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com