在 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 无意中在不需要的行上放置了复选标记