我正在处理包含大量项目的动态 tableView
,根据其选择划分为部分。 部分是客户名称,项目(即每个部分中的rows
)是客户选择的食物。到目前为止,我有一些关于如何更新它的问题。
我使用了一个带4个按钮的表(C1,C2,C3,C4)。
然后,当选择客户端时,我将其附加到我用于标题部分的空数组(客户端)中。
我还为每个部分(myarray
,c2array
,c3array
创建了4个空数组, c4array
)我填写了客户选择的项目,但我的代码中有一部分混淆。
为了填写每个cell
的{{1}},我写了这个:
row
运行快速模拟后,我得到了这个
现在当我尝试再次将食物E添加到C1时(我选择C1按钮)我得到:
所以我的代码说是否有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中填写/更新相应的数组。谢谢你的帮助!
答案 0 :(得分:0)
我假设流程是选择一个按钮(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。
就个人而言,我觉得有很多更好,可扩展的方法可以将解决方案构建到您尝试在应用中构建的内容,但这应该可以作为快速修复。希望它有所帮助!
答案 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")
}
}