Swift:如何在同一个UITableViewController中的唯一UITableViewCell之间传递数据

时间:2016-10-12 01:17:23

标签: swift uitableview

我有一个UITableViewController,它有两个独特的自定义UITableViewCells。唯一单元格是HeaderCell(第0行),其中包含名为orderPriceLabel的UILabel中的整个订单的价格,以及ItemCell的{​​{1}}(第1行)它存储每个项目在其索引路径上的价格以及itemPriceLabel,它存储每个项目已添加到订单的次数。

每个countLabel都有一个ItemCell UIButton和一个+ UIButton。每次点按-按钮时,相应索引路径的+都会增加,如果点按countLabel按钮,则-会减少。这部分是我喜欢的方式。我正在努力解决的问题是更新第0行countLabel中的orderPriceLabel。当点按HeaderCell按钮时,+应增加存储的值在orderPriceLabel' ItemCell中,当点击itemPriceLabel按钮时,应该会发生相反的情况。

ItemCell代码:

-

HeaderCell代码:

class ItemCell: UITableViewCell {

// MARK: Properties
@IBOutlet weak var itemOrderCountLabel: UILabel!
@IBOutlet weak var itemPriceLabel: UILabel!

var count: Int = 0

override func awakeFromNib() {
    super.awakeFromNib()

}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)


}

@IBAction func decrementButton(sender: AnyObject) {
    count -= 1
    itemOrderCountLabel.text = "\(count)"
    //How to decrease orderPriceLabel

}

@IBAction func incrementButton(sender: AnyObject) {
    count += 1
    itemOrderCountLabel.text = "\(count)"
    //How to increase orderPriceLabel

}

TableViewController代码:

class FoodMenuTableViewCell: UITableViewCell {

// MARK: Properties
@IBOutlet weak var orderPriceLabel: UILabel!

override func awakeFromNib() {
    super.awakeFromNib()

}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)


}

我非常喜欢快速编程和编程。

感谢您的帮助!!!

1 个答案:

答案 0 :(得分:0)

我建议将您的总价存储在类变量(属性)中。在TableViewController类中添加viewDidLoad上面的这行代码:

var totalPrice = 0

这会创建一个可以在整个班级中轻松访问的变量。当您点击ItemCell中的+或 - 按钮时,请将所需的值添加到totalPrice,这样itemPriceValue就是您要添加的内容:

self.totalPrice += itemPriceValue

现在,您可以使orderPriceLabel等于totalPrice的值。另外,要确保UITableView更新,请将此方法添加到TableViewController代码的底部:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.tableView.reloadData()
}