2つのユニークなカスタムUITableViewCellを持つUITableViewControllerがあります。ユニークなセルは、orderPriceLabel
、ItemCell
(行1+)と呼ばれるUILabelの注文全体の価格を含むHeaderCell
(行0)です。itemPriceLabel
はインデックスパスに各アイテムの価格を格納します。 countLabel
は、各アイテムが注文に追加された回数を格納する。Swift:同じUITableViewControllerのユニークなUITableViewCell間でデータを渡す方法
各ItemCell
は、+
UIButtonおよび UIButtonを有する。 +
ボタンがタップされるたびに、対応するインデックスパスにあるcountLabel
が増加し、-
ボタンがタップされると、countLabel
が減少します。この部分は私がどのようにしたいのかに作用します。私は+
ボタンをタップすると、行0でHeaderCell
でorderPriceLabel
を更新しているに苦しんだ、orderPriceLabel
はItemCell
のitemPriceLabel
に格納された値によって増やす必要があり、その逆は-
ボタンをタップした時に起こるべき。
ItemCellコード:
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
}
HeaderCellコード:
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)
}
TableViewControllerコード:
class FoodMenuTableVC: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
itemList.count + 1
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cellIdentifier = "headerCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! HeaderCell
//cell.orderPriceLabel.text = ....?
return cell
} else {
//This works fine
let cellIdentifier = "itemCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! ItemCell
let name = localSelectedVendorName!
let keys = Array(itemList.keys)
let values = Array(itemList.values)
cell.itemPriceLabel.text = String(values[indexPath.row - 1].price)
cell.itemOrderCountLabel.text = " "
}
return cell
}
私は迅速かつ一般的なプログラミングにはかなりのnoobです。
ありがとうございました!
ボタンがItemCellクラスに格納されているため、これは機能しません。現在、私は適切に更新するグローバル変数を使用していますが、HeaderCellでは更新されません。 – madrhatter