在 Tableview 中为先前选择的行加载复选标记(已批准的用户)

Posted

技术标签:

【中文标题】在 Tableview 中为先前选择的行加载复选标记(已批准的用户)【英文标题】:Load Checkmarks in Tableview for previously selected rows(approved users) 【发布时间】:2017-11-19 07:00:48 【问题描述】:

现在我可以在使用您的方法 vadian 选择的表中添加复选标记。我还在我的数据类中添加了Boolean("selected")。我没有得到的是如何使用 UserDefaults 保存为每一行选择的布尔值,或者如何将其加载到表格中的行的单元格中。我还需要触摸didload 部分吗?

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as? TableCell else 

        return UITableViewCell()
    
                  let product = products[indexPath.row]
    cell.accessoryType = product.selected ? .checkmark : .none

return cell   



func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as? TableCell else 



        return UITableViewCell()
    

  func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
 

    var selected = products[indexPath.row].selected
    products[indexPath.row].selected = !selected
    tableView.reloadRows(at: [indexPath], with: .none)

    if selected != true print("selected", indexPath.row, selected )
    else print("selected", indexPath.row, selected )

    selected = UserDefaults.standard.bool(forKey: "sound")

【问题讨论】:

【参考方案1】: 将属性var approved : Bool 添加到您的数据模型中 选择更改时更新模型中的属性并重新加载行。

cellForRow中根据属性设置复选标记

...
let cell = tableview.dequeueReusableCell(withIdentifier: "myfeedTVC", for: indexPath) as! MyFeedTVC
let user = userDataArray[indexPath.row]
cell.accessoryType = user.approved ? .checkmark : .none  
...

【讨论】:

感谢您花时间回复我真的很感激。所以在 viewdidload 部分或上面添加“var approved : Bool”?选择更改时如何更新模型中的属性?我猜我使用 didselectrow 以某种方式设置每个的布尔值?不知道如何让它重新加载该行。它会自动执行吗? 不,您必须将属性添加到您的数据模型(数据源数组中的项目)。每个项目都有自己的approved 值。您可以使用 tableView.reloadRows... 重新加载单行,并且您必须在 didSelect 中明确执行此操作(也可能在 didDeselect 中) 你能告诉我怎么做第一和第二个子弹吗?我想我得到了你在 3 日所做的事情,因为你提供了代码给我看。 :) 请看***.com/questions/46397812/… 可以在我的问题中使用该技术吗?由于我能够成功加载使用 userdefaults 选择了哪个索引路径行,我是否可以保存一个字符串或布尔值“true”并将其附加到数组而不是使用 indexpath.row 所以而不是 [0,1] i将加载 ["true", "true"] 。如果 indexpath.row = true,则显示复选标记,否则不显示复选标记??

以上是关于在 Tableview 中为先前选择的行加载复选标记(已批准的用户)的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 无意中在不需要的行上放置了复选标记

刷新表视图 iphone

如何在加载了 JSON API 数据的 tableview 单元格中保存复选标记属性?

使用复选框插件时预先选择数据表的行

tableview 编辑模式单元格选择复选标记在滚动时消失

清除搜索结果后,Swift Tableview 搜索结果单元格选择复选标记未保存