ios - 如何在 tableView 之外获取所有自定义 tableview 单元格 textField 和 textView 值

标签 ios swift uitableview

我尝试像这样从 tableView 外部访问自定义 tableView 单元格文本字段:

for i in 0..<NameCounter {
let indexPath = IndexPath(row: i, section: 0)
guard let cell = sampleTableView.cellForRow(at: indexPath) as? sampleCellView else{
    return
}
if let text = cell.txtName.text, !text.isEmpty {
   let value = text
   print("Getting NameText : \(value)")
}

if let text = cell.txtNote.text, !text.isEmpty {
    let value = text
    print("Getting noteText : \(value)")
}}

但问题是上面的方法你只能得到 tableView 的可见单元格,除了 cell 是 nil。并且因为我保护它以避免出现 nil 单元格,所以我没有获得所有文本字段值。

如果我像这样移除守卫:

let cell = sampleTableView.cellForRow(at: indexPath) as! sampleCellView

它会崩溃并得到一些单元格为零。

如何从外部 tableView 访问所有文本字段值并获取所有单元格(单元格不能为零)?

我有多个 tableView,在每个 tableView 单元格中,我放了 txtName 和 txtNote。我想检测哪个 txtName 和 txtNote 正在被编辑,这样我就可以放入正确的模型。

注意:txtName是textfield,txtNote是textView

最佳答案

您不应依赖从单元格标签、文本字段等中获取的值。

一旦单元格离开屏幕 - 它会被扔到池中供以后重用,甚至可能会被释放。

您应该将 View 状态保存在某个数组中,然后您就可以安全地获取任何索引处的任何值。

如果您有 1000 个细胞,那么在任何时候可能只有 10-20 个是可见的,在可重复使用的细胞池中可能只有 40-50 个左右。如果您位于索引路径第 100 行 - 显然索引路径第 150 行之后的单元格将为 nil

关于ios - 如何在 tableView 之外获取所有自定义 tableview 单元格 textField 和 textView 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53722055/

相关文章:

sql-server - 在 iOS 上通过套接字编程连接到 SQL Server

ios - UIActivityViewController swift !在 iPad 上崩溃

ios - 设置 SKSpriteNode.phyisicsBody.categoryBitMask 时出现 EXC_I386_INVOP 错误

ios - 如何使 UITextView 文本同时对齐和对齐

ios - 如何将自定义单元格放入另一个自定义单元格?

ios - 当 UITableView 滚动到非顶部并显示索引 2 超出范围 [0..1] 时,它会崩溃

ios - 如何在 Swift 3 中向动画图像集添加淡入淡出?

ios - 多管理对象上下文

ios - 不能在不可变值 : 'n' is a 'let' constant 上使用可变成员

ios - 在 UITableView 和 NSArray 中使用多节