Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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_Arrays_Swift_Uitableview - Fatal编程技术网

Ios 如何知道选择了哪个部分?敏捷的

Ios 如何知道选择了哪个部分?敏捷的,ios,arrays,swift,uitableview,Ios,Arrays,Swift,Uitableview,我正在开发一个动态的tableView,其中包含许多项,根据它们的选择划分为多个部分。部分是客户名称,项目(即每个部分中的行)是客户选择的食品。到目前为止,我在如何更新它方面遇到了一些问题。我使用了一个带有4个按钮(C1、C2、C3、C4)的表。 然后,当选择一个客户机时,我会将其附加到一个空数组(客户机)中,我将其用于头部分。 我还为每个部分创建了4个空数组(myarray,c2array,c3array,c4array),我用客户选择的项目填充这些部分,但我的代码中有一部分比较混乱 为了为每

我正在开发一个动态的
tableView
,其中包含许多项,根据它们的选择划分为多个部分。部分是客户名称,项目(即每个部分中的
)是客户选择的食品。到目前为止,我在如何更新它方面遇到了一些问题。
我使用了一个带有4个按钮(C1、C2、C3、C4)的表。 然后,当选择一个客户机时,我会将其附加到一个空数组(客户机)中,我将其用于头部分。
我还为每个部分创建了4个空数组(
myarray
c2array
c3array
c4array
),我用客户选择的项目填充这些部分,但我的代码中有一部分比较混乱

为了为每个
行填充
单元格
,我写了以下内容:

    let cell = tableView.dequeueReusableCell(withIdentifier: "Leschoix", for:indexPath) as UITableViewCell!

    if indexPath.section == 0 {
        cell?.textLabel?.text = myarray[indexPath.row]
        }

    if indexPath.section == 1  {
        cell?.textLabel?.text = c2array[indexPath.row]
    }

    if indexPath.section == 2 {
        cell?.textLabel?.text = c3array[indexPath.row]
    }

    if indexPath.section == 3 {
        cell?.textLabel?.text = c4array[indexPath.row]
    }

        }
在运行了一个快速模拟之后,我得到了这个


  • C1:一餐A一餐B(我选择C1并选择两餐A和B)

  • C2:膳食C膳食D
  • 现在,当我再次尝试将一餐E添加到C1时(我选择C1按钮),我得到:


  • C2:膳食C膳食D膳食E而不是更新C1

  • 所以我的代码是说,如果有1个部分,用文本填充数组,如果有2个部分,用
    c2array
    填充数组,依此类推。在这种情况下,我们有2个部分,所以它不会更新第一个部分。这意味着我不能更新第一部分。如果您在“I”部分中,我如何说,然后更新相应的数组?。我正在寻找一种方式来表示,无论何时选择客户机I,我都在j部分,并相应地填充/更新相应的数组。谢谢你的帮助

    我假设流程是选择一个按钮(C1/C2/C3/C4),然后选择要添加的任何膳食(a/B/C/D/E…)

    这里有一个解决方案

    在类中维护一个变量
    selectedCustomerIndex:Int
    ,当选择按钮C1时,将
    selectedCustomerIndex
    更新为0,对于C2将其设置为1,对于C3将其设置为2,依此类推

    因此,现在当您添加任何膳食时,根据
    selectedCustomerIndex

    大概是这样的:

    switch selectedCustomerIndex {
        case 0:
            //add to myarray
        case 1:
            //add to c2 array.
        .
        .
        .
        .
        default: //do nothing.
    }
    
    然后重新加载tableview


    就我个人而言,我觉得有很多更好的、可扩展的方法来构建解决方案,以满足您试图在应用程序中构建的内容,但这应该是一个快速解决方案。希望有帮助

    正如您所说,您正在tableview中工作,下面的代码片段可能会对您有所帮助

    tableview单元格上的按钮:

    cell.yourButton.tag = indexPath.section
    cell.btnselectedClient.addTarget(self, action: #selector(buttonAddMeTap(sender:)), for: UIControlEvents.touchUpInside)
    
    检测哪个部分按钮被点击,并根据需要将元素添加到数组中

    func buttonAddMeTap(sender:UIButton) {
    
        switch sender.tag {
        case 0:
            print("first")
        case 1:
            print("Second")
        case 2:
            print("third")
        case 3:
            print("fourth")
    
        default: 
            print("default")
        }
    }
    

    谢谢你的帮助。事实上,流程是选择C1或C2或C3或C4,我们不关心哪一个是第一个。流量不是1 2 3 4。没有秩序。你对更好的方法有什么建议?我曾考虑过使用struct和dictionnary,但既然我已经用这种方式开始了,我宁愿先看一遍