首页 > 解决方案 > 选择 TableView 中的每一行,包括屏幕外的行

问题描述

现在,我可以选择屏幕上可见的所有行,但我希望能够选择 TableView 中的所有行,包括屏幕外的行。

我在这里尝试过扩展:以编程方式选择 tableview 中的所有单元格,因此下次按下它们时,它们会调用 didDeselect

以及这里的第二个解决方案:使用 selectRowAtIndexPath 以编程方式选择所有 TableView 行

两者都以相同的结果结束,只选择了可见的行。

我的最终目标是,当我能够选择所有行时,我可以按下“确认”按钮并检索每行的 ID,然后将其发送到我已经能够完成的服务器,我只需要弄清楚如何选择所有行,这样我就可以获得该 ID 列表。

谢谢您的帮助!

添加数据源结构

var dataClassArr = [DataClass]()

struct DataClass: Codable {
    let id: String
}

标签: swiftuitableview

解决方案


没有

您不能选择所有单元格,因为它们正在被重复使用,这意味着只有足够的单元格存在。

当按下“确认”按钮时,您可以从数据源中获取数据,您正在使用该数据源来创建UITableView.


注意:如果按下该按钮时状态发生变化,则应遍历数据源并更新对象。然后你.reloadData()


根据您的问题更新进行更新,这就是您遍历数据源的方式。

        var dataClassArr = [DataClass]()

        var result = [String]()

        dataClassArr.append(DataClass(id: "1"))
        dataClassArr.append(DataClass(id: "42")) // just for example, you should remove those.

        for element in dataClassArr {
            result.append(element.id)
        }

        print(result) // ["1", "42"] -> based on example values.

推荐阅读