gpt4 book ai didi

ios - 点击按钮时用新部分填充 UItableView

转载 作者:行者123 更新时间:2023-11-28 08:27:25 34 4
gpt4 key购买 nike

我正在做一个项目,我在 ViewController 1 中创建了一个 TableView。 在这个 VC1 中,我还创建了显示 popupView 的按钮(我们称之为 popupButton)。 弹出 View 包含一些数据,即由按钮表示的膳食。当点击按钮时,我收集从弹出 View 中选择的餐点,并通过委托(delegate)将其发送回 VC1。我设法完成了这项工作,并且可以显示在 UITableView 上选择的餐点。问题是我想根据所选客户端填充 tableView(在 VC1 中,我有代表每个客户端的 UIbuttons),如下所示:

  • 客户 1
    • A餐
    • B餐
  • 客户 2
    • C餐
    • 餐X等

如果选择了按钮 Client 1 并点击了餐点 A,则创建部分 C1 作为标题和餐点 A 餐点 B 等等。然后,当我点击 Client 2 并选择其他餐点时,将这些餐点添加到标题为 Client 2 的新部分。目前,如果选择了 Client 1,我会得到 Client 1 作为标题。但是,如果我点击客户端 2 并选择一顿新餐,它会将标题更改为客户端 2,并且不会创建新部分。此外,我的代码有效,即即使根本没有选择客户,我也可以在我的餐 table 上加餐(到目前为止这很好,但我希望它在选择客户时工作)

在下面的代码中,我只展示了有助于理解我到目前为止所做的事情的部分。自从我一直在寻找一段时间以来,任何想法都会非常感激。我正在考虑使用 struct 但我不知道如何将它与我的案例混合使用。我看到的所有示例似乎都是关于静态案例的,而我正在寻找动态的东西。感谢亲爱的读者花时间阅读我的问题并帮助“绝望的灵魂”。

var meal: String?  // this var is used to collect the name of the meal

var mycustomer:String = "" // this var gets the name of the customer
@IBAction func clientselected(sender: UIButton) {
if sender.selected {
sender.backgroundColor = UIColor.lightGrayColor()
sender.selected = false

print ("the button is unselected")
}

else {
sender.backgroundColor = UIColor.redColor()
sender.selected = true
print ("the button is selected")
let clientname = sender.titleLabel!.text
mycustomer = clientname!

}

var myarray = [String]() // Create an empty array of strings that we can fill later on with the meals selected


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return myarray.count // Gets the number of strings in the array
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCellWithIdentifier("Leschoix", forIndexPath:indexPath) as UITableViewCell!
cell.textLabel?.text = myarray[indexPath.row]
return cell

}

func tableView(tableView: UITableView, titleForHeaderInSection section: Int)-> String?
{
return "\(mycustomer)"}

func foodselected(valuesent:String) { // this func gets the name of the meal tapped in the popUpView through delegation
let meal = valuesent
print("OrderViewcontroller\(meal)")
myarray.append(meal) // each meal selected will be added up to the empty myarray
print ("Here is the food array \(myarray)")
self.TableView.reloadData()

}

最佳答案

我会尽力回答您的问题。

所以我们希望能够有多个部分。所以我们需要一个变量来改变 tableView 中的部分数量。

var numberOfSections: Int = 1

func numberOfSectionsInTableView(tableView: UITableView) -> Int {

return numberOfSections
}

这样我们就可以根据需要更改 numberOfSections 以在 TableView 中包含 1 或 2 个部分。

然后我们需要有多个数组来定义numberOfRowsInSection。否则我们将在每个部分拥有完全相同的元素。如果我们使用您当前的版本。这两个部分的内容完全相同。

var sectionOneArray = [String]()
var sectionTwoArray = [String]()

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

if section == 0 {
return sectionOneArray.count
}

if section == 1 {
return sectionTwoArray.count
}

return 0
}

我们还需要两个客户字符串来填充 titleForHeaderInSection

var myFirstCustomer = ""
var mySecondCustomer = ""

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

if section == 0 {
return myFirstCustomer
}

if section == 1 {
return mySecondCustomer
}
}

现在我们可以填充数组并告诉我们的应用程序是否需要一个或两个部分,具体取决于这样的客户数量。我们还需要能够判断我们是在弹出窗口中为客户 1 还是客户 2 选择菜单,但我目前不知道您的弹出窗口是什么样子,但代码应该是这样的:

func foodselected(valuesent:String) { 

if popUpChoseForCustomerOne {
let meal = valuesent

sectionOneArray.append(meal)
}

if popUpChoseForCustomerTwo {
let meal = valuesent

sectionTwoArray.append(meal)
numberOfSections = 2
}

self.TableView.reloadData()

}

我在没有使用 IDE 的情况下编写了这段代码,因此它可能并不完美。但它绝对应该让您了解我将如何处理这个问题。

关于ios - 点击按钮时用新部分填充 UItableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628621/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com