swift - 如何获取编辑 UITextView 的单元格的行号?
问题描述
- 我在UITableView的每个单元格内都有一个UITextView
- 我正在使用核心数据来保存在 UITextView 中输入的数据
- 一旦用户完成编辑,我想保存在 UITextView 中输入的文本
- 我已将UITextViewDelegate添加到我的TableViewCell类中
- 我正在使用通知将新文本发布到TableViewController
我能够将新文本获取到TableViewController但我不知道如何获取包含文本视图的单元格的行号,其中文本被键入。我需要知道行号(或该行中的对象)来更新正确的 NSManagedObject。
我试过的:
我正在考虑使用标签,但由于我需要不断添加和删除行,这不是最好的方法
我曾尝试使用DidSelectedRowAtIndexPath但当用户点击 UITextView 时它不会被触发(UITextView 覆盖了一个单元格的 80%)
在 TableViewCell 类中,我有:
func textViewDidEndEditing(_ textView: UITextView) {
// Post notification
let userInfo = [ "text" : textView.text]
NotificationCenter.default.post(
name: UITextView.textDidEndEditingNotification,
object: nil,
userInfo: userInfo as [AnyHashable : Any])
}
在 TableViewController 中,我有:
//Subscribe
NotificationCenter.default.addObserver(self,
selector: #selector(textEditingEnded(notification:)),
name: UITextView.textDidEndEditingNotification,
object: nil)
@objc func textEditingEnded(notification:Notification) {
guard let text = notification.userInfo?["text"] as? String else {return}
print ("text: \(text)")
}
不要犹豫,询问更多细节。我会很感激我能得到的每一点帮助!
解决方案
NSManagedObject
在表格视图单元格中创建类型的属性。- 在 Interface Builder 中
delegate
,将文本视图连接到单元格。 - 在控制器中,将适当的数据源项传递
cellForRowAt
给单元格。 - 删除观察者,而不是发布通知,
NSManagedObject
直接更改实例中的属性并保存上下文。
由于NSManagedObject
实例是引用类型,因此更改将持续存在。
推荐阅读
- python - 使用用户名和密码进行验证时如何获取 ID 令牌?
- r - 仅在 bookdown 的某些章节中包含 before_body
- database - 如何使用 GraphQL 即时更改数据库连接?
- azure - 从 azure 函数创建 azure 不记名令牌
- javascript - 从jquery恢复表格内表格中的按钮不允许.hover on button运行
- java - 使用 java 的 Gmail 密码字段 Selenium WebDriver 的元素不可交互
- mysql - 向 MySQL 数据库添加 UNIQUE 约束,其中包含 7500 条不唯一的记录
- reactjs - 调度触发后使用状态
- c++ - 行列式使用高斯消元法,C++
- azure - func.exe 如何识别从 VS2019 运行的特定函数?