【问题标题】:Update specific cells更新特定单元格
【发布时间】:2018-10-10 08:27:09
【问题描述】:

所以我有一个显示 json 数据的 tableview。

首先来自JSON1 = [{"serverid":65,"name":"Apple"},{"serverid":98,"name":"Mac"}] 以及从第二个 json 中获取的每个单元格的详细信息。

JSON2 = [{"serverid":98,"updated": "10:29 PM"},{"serverid":65,"updated": "10:29 PM"}]

现在 60 秒后,我再次调用服务器以仅返回 JSON 2(我获取 json 的顺序是随机的)。

有一个参数上次更新。基于此,我将检查要更新的单元格。

但是如何只更新选定的单元格? (不是完整的表格视图,而是特定的单元格)

我知道函数"reloadRows(at: [indexPath]",但我不知道如何将选定的单元格传递给这个函数?

【问题讨论】:

  • 我认为您需要像这样在 JSON1 中获取 JSON2 [{"serverid":65,"name":"Apple","updated": "10:29 PM"},{"serverid":98,"name":"Mac","updated": "10:29 PM"}] 因为 JSON1 和 JSON2 是无序的。如果你想和上面提到的一样,那么你需要根据“serverid”对数据进行排序。
  • //更新特定行(这两行代码) let indexPath = IndexPath(item: rowNumber, section: 0)//这里需要提一下你更新行的self.uploadDocumentsTableView.reloadRows(at : [indexPath], with: .top)
  • @iOS,你不认为这里的“更新”值出错了。因为如果我从 JSON1 加载 tableView 中的数据,那么第一行包含 Apple,如果我用 JSON2 更新它,那么 Mac“更新”值设置为 Apple

标签: ios json swift uitableview


【解决方案1】:

当你说选中时,这意味着单元格有isSelected == true。如果是这种情况,那么您可以使用indexPathsForSelectedRows

if let indexPaths = tableView.indexPathsForSelectedRows {
    tableView.reloadRows(at: indexPaths, with: .automatic)
}

但是,如果您选择的意思是数据源中需要通过 60 秒更新更改的行,那么您需要提供更多详细信息。您如何将数据源绑定到单元格tableView(_:cellForRowAt:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-30
    • 2018-01-08
    • 2021-03-27
    • 2013-01-19
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多