如何知道选择哪个部分?迅速

时间:2017-02-11 04:48:23

标签: ios arrays swift uitableview

我正在处理包含大量项目的动态 tableView,根据其选择划分为部分部分是客户名称,项目(即每个部分中的rows )是客户选择的食物。到目前为止,我有一些关于如何更新它的问题。
我使用了一个带4个按钮的表(C1,C2,C3,C4)。  然后,当选择客户端时,我将其附加到我用于标题部分的空数组(客户端)中。  
我还为每个部分myarrayc2arrayc3array创建了4个空数组c4array)我填写了客户选择的项目,但我的代码中有一部分混淆。

为了填写每个cell的{​​{1}},我写了这个:

row

运行快速模拟后,我得到了这个

  1. C1:餐A餐(我选择C1并选择2餐A和B)
    1. C2:膳食C餐D
    2. 现在当我尝试再次将食物E添加到C1时(我选择C1按钮)我得到:

      1. C2:餐C餐D餐E而非更新C1
      2. 所以我的代码说是否有1 部分用文本填充数组,如果有2个部分,用 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] } } 填充,依此类推......在这种情况下,我们有2个部分,因此它不会更新第一部分。这意味着我无法更新第一部分。我怎么能说如果你在部分我然后更新相应的数组?我正在寻找一种方法来说明,无论何时选择客户端i,我都会在部分 j中填写/更新相应的数组。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

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

这是一个解决方案。

  

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

所以现在当你添加任何一餐时,根据selectedCustomerIndex

的值将它添加到适当的数组(myarray,c2array,c3array ......)

这样的事情:

switch selectedCustomerIndex {
    case 0:
        //add to myarray
    case 1:
        //add to c2 array.
    .
    .
    .
    .
    default: //do nothing.
}

然后重新加载你的tableview。

就个人而言,我觉得有很多更好,可扩展的方法可以将解决方案构建到您尝试在应用中构建的内容,但这应该可以作为快速修复。希望它有所帮助!

答案 1 :(得分:0)

正如您所说,您正在使用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")
    }
}