swift - 选择 TableView 中的每一行,包括屏幕外的行
问题描述
现在,我可以选择屏幕上可见的所有行,但我希望能够选择 TableView 中的所有行,包括屏幕外的行。
我在这里尝试过扩展:以编程方式选择 tableview 中的所有单元格,因此下次按下它们时,它们会调用 didDeselect
以及这里的第二个解决方案:使用 selectRowAtIndexPath 以编程方式选择所有 TableView 行
两者都以相同的结果结束,只选择了可见的行。
我的最终目标是,当我能够选择所有行时,我可以按下“确认”按钮并检索每行的 ID,然后将其发送到我已经能够完成的服务器,我只需要弄清楚如何选择所有行,这样我就可以获得该 ID 列表。
谢谢您的帮助!
添加数据源结构
var dataClassArr = [DataClass]()
struct DataClass: Codable {
let id: String
}
解决方案
你没有。
您不能选择所有单元格,因为它们正在被重复使用,这意味着只有足够的单元格存在。
当按下“确认”按钮时,您可以从数据源中获取数据,您正在使用该数据源来创建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.
推荐阅读
- android - PushNotificationsAPI:注册设备失败:NOKResponse(error=Unauthorized)
- python - 如何在 django 中实现没有 csrf 令牌的 csrf
- java - 此应用程序出现白色标签错误没有/error 的显式映射,因此您将其视为 Spring boot 中的后备
- angular - 无法访问订阅响应中的对象
- azure - 如何在警报的监视时间段之外获取 Azure Log Analytics 中相应 IIS 停止日志的 IIS 启动日志
- php - 如何修复 PHP 7.2 警告:count():参数必须是在errors.php 中实现Countable 的数组或对象?
- c++ - 为什么使用“无 const 复制构造函数”时编译器会报错?
- cellular-automata - 预测元胞自动机
- kie-workbench - Kogito:是否可以在 Web 应用程序中嵌入 Kogito DMN 编辑器?
- python - 使用 Jupyter 在函数中缓存变量