如何在popover中存储tableview单元格选中标记状态?

时间:2017-08-08 11:34:41

标签: ios uitableview swift3 nsuserdefaults

我在初始视图控制器中有几个按钮。单击任何按钮时,将显示带有可扩展桌面视图的弹出窗口。我正在使用单个弹出框来显示所有具有不同数据的按钮,以便在tableview上显示。当我点击其他按钮以便全部点击第一个按钮时,弹出框中的选定项目将被删除。所选项目将基于indexpath.row保存到数组中。当我尝试基于相同的indexpath.row从同一个数组中删除所选项时,会出现异常错误。

如何在所有popover的每个单元格选择中存储复选标记?

这是我的一段代码

func expandableTableView(_ expandableTableView: LUExpandableTableView, didSelectRowAt indexPath: IndexPath)
{
    let selectedService = arrData[indexPath.section].Children?[indexPath.row].EnglishName ?? ""
    let inPrice = arrData[indexPath.section].Children?[indexPath.row].InPrice ?? 0
    print("service and price : \(selectedService) \(inPrice)")
    let selectedItem = (" \(selectedService) \(inPrice)")
    let cell: UITableViewCell? = expandableTableView.cellForRow(at: indexPath)
    if cell?.accessoryType == UITableViewCellAccessoryType.none
    {
        cell?.accessoryType = UITableViewCellAccessoryType.checkmark
        selectionArr.append(selectedItem)
        inPriceCount =  inPrice
    }
    else
    {
        cell?.accessoryType = UITableViewCellAccessoryType.none
            selectionArr.remove(at: indexPath.row)
            inPriceCount =  -inPrice
    }
    self.delegate?.messageData(data: selectionArr as AnyObject)
    self.delegate?.inPrice(data: inPriceCount as AnyObject)
    let rowToSelect = [expandableTableView .indexPathForSelectedRow]
    print(rowToSelect)

}

1 个答案:

答案 0 :(得分:0)

你不应该从数组中删除任何东西。只需在每个索引上添加一个键

dict["ischeckMarked"]=false

当您点击复选标记时更改为真

dict["ischeckMarked"]=true

如果已经选中,现在要取消标记,请将其更改为false

dict["ischeckMarked"]=false

希望这会帮助你。