【问题标题】:I could not get text field value in dynamic table view swift我无法在动态表格视图中快速获取文本字段值
【发布时间】:2021-01-15 04:19:29
【问题描述】:

所以我根据用户输入创建了这个数量的部分。 例如我输入了 2 个部分,我填充了 1 - 8 个数字,它工作得很好:

但是当我输入了 4 个部分并填充了 1 - 16 个数字时,但是查看第 1 部分,值改变了我不知道为什么。图片如下:

这是我的功能代码:

func getAllValue() {
    for sectionIndex in 0...finalSectionNumber - 1 {
        print("section index: \(sectionIndex)")
        print("final txt field: \(finalSectionNumber)")
        for rowIndex in 0...tableView.numberOfRows(inSection: sectionIndex) - 1 {
            let indexPath = IndexPath(row: rowIndex, section: sectionIndex)
            let cells = tableView.cellForRow(at: indexPath) as? CellOutlet
            print("row index: \(rowIndex)")
            print(cells?.txtFieldSpecNumb.text ?? 0)
        }
    }
}

我在这里错过了什么? 有人可以帮忙吗?

提前谢谢你

【问题讨论】:

    标签: ios swift uitableview tableview cell


    【解决方案1】:

    记住,细胞被重复使用。一个单元格可以从一行跳到另一行。但更重要的是:这种做法是完全错误的:

            let cells = tableView.cellForRow(at: indexPath) as? CellOutlet
            print("row index: \(rowIndex)")
            print(cells?.txtFieldSpecNumb.text ?? 0)
    

    Never never never(我提到过“never”吗?)将 view 视为 model。单元格,即文本字段,不是数据。如果您想知道数据是什么,查看数据。查阅数据模型,而不是表格视图。 (当然,您一直在数据模型的文本字段中保留用户输入的所有内容,不是吗?)

    【讨论】:

    • 嘿,谢谢您的反馈。我在这里相当新,这是关于 MVC 的东西,对吧?我不应该在 View Controller 中获取数据,这是你说的吗?标签 1,2,3,4 的文本字段中的输入稍后将用作我的数据。所以我必须从视图中获取数据对吗?我能阅读的任何参考资料都会非常有帮助,非常感谢好友
    【解决方案2】:

    单元格被重复使用,当您滚动并且单元格的可见性超出屏幕区域时,它们会被重复使用。

    您必须使用临时数组来保存值并使它们与单元格索引同步。从您创建的数组中在 cellForRowAt 索引路径方法中设置这些值。

    【讨论】:

    • 你有任何提示如何将值放入临时数组吗?我需要创建结构吗?因为 1 个部分将有 4 个数据(4 行)
    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2020-08-04
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多