如何获取所有当前行信息表

时间:2017-03-22 07:17:55

标签: ios swift uitableview swift3

我是swift的新手。我正在以编程方式执行我的项目,并将数据从api加载到tableView和tableView,就像ios设置页面一样。 enter image description here

现在我需要所有行信息,点击"添加到购物车"按钮。我该怎么做?

这是我的代码示例:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


    switch indexPath.section {
    case 0:
        let cell = tableView.dequeueReusableCell(withIdentifier: cartHeaderCell, for: indexPath) as! CartHeaderCell

        cell.configureCell(indexPath.item)

        return cell

    case 1:

        let obj = data?[indexPath.row]

        var cell = UITableViewCell()


        switch obj {
        case  is Addon:

            cell = tableView.dequeueReusableCell(withIdentifier: addonCell, for: indexPath) as! AddonCell

            let switchView = UISwitch(frame: .zero)

            switchView.setOn(false, animated: true)



            cell.accessoryView = switchView


            guard let addon = obj as? Addon else {

                return cell

            }

            cell.textLabel?.text = "\(addon.name) + €\(addon.price)"

        case  is AddonGroup:

            cell = tableView.dequeueReusableCell(withIdentifier: addonGroupCell, for: indexPath) as! AddonGroupCell
            cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator

            guard let addonGroup = obj as? AddonGroup else {

                return cell

            }

            if let addons = addonGroup.addonList {

                cell.detailTextLabel?.text = ""
                var selectedAddons = ""
                for _addon in addons
                {
                    if _addon.isSelect == true {

                        selectedAddons = selectedAddons + "\(_addon.name)"


                    }  

                }

                cell.detailTextLabel?.text = selectedAddons
            }

            cell.textLabel?.text = addonGroup.name
         ...........................................

1 个答案:

答案 0 :(得分:0)

正如Fahim所提到的,您需要设置一个数据模型,在用户与每个单元格交互之前/期间/之后记录每个单元格的状态。因此,当细胞离开屏幕然后重新开启时,它将显示模型的正确状态。

其次,对于UISwitchViews,您应该实例化并将这些内容添加到每个单元格中的contentView,以保持cellForRow功能清洁无问题。原因引导我进入下一点:如何在用户与UISwitchView交互后记录每个UISwitchView的状态。您将要创建协议并在UICollectionViewCell中添加委托(继承类,委托应该是弱变量),以便在轻触UISwitch时更新模型。

如果您还有其他问题,我可以尽力帮助您!