Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何获取表中所有当前行信息_Ios_Swift_Uitableview_Swift3 - Fatal编程技术网

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

Ios 如何获取表中所有当前行信息,ios,swift,uitableview,swift3,Ios,Swift,Uitableview,Swift3,我不熟悉斯威夫特。我正在以编程方式完成我的项目,我将数据从api加载到tableView和tableView(如ios设置页面)。。 现在我需要所有行信息时,点击“添加到购物车”按钮。我怎么做 以下是我的代码示例: func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { switch indexPath.section { case

我不熟悉斯威夫特。我正在以编程方式完成我的项目,我将数据从api加载到tableView和tableView(如ios设置页面)。。

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

以下是我的代码示例:

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
         ...........................................

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

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


如果你还有任何问题,我可以尽力帮助你

我假设您只是想通过获取表的所有行来获取用户选择
UITableView
只创建可见的行,因此无法从表视图中获取所有行。相反,这应该通过用于填充表视图的数据模型来处理。如果要在用户做出选择时保留用户选择,则应检测特定事件并更新模型。如果你需要更多信息,我很乐意帮助你。@Fahim谢谢。。我该怎么做?请告诉我,或者提供我将接受的答案,这取决于您如何设置表视图的数据。
configureCell
方法从何处获取配置每个单元格视图的数据?这可能是你的出发点。然后,当用户从表视图中做出选择时,必须将该选择的数据添加到该模型中。如果我能看到项目代码,我可以给出更详细的答案。你能和我分享这个项目吗?