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,但既然我已经用这种方式开始了,我宁愿先看一遍