gpt4 book ai didi

ios - swift - 如何设置另一个类的 UIStepper 值?

转载 作者:行者123 更新时间:2023-11-28 14:51:18 27 4
gpt4 key购买 nike

我有一个 tableview,其中包含一些带有 UIStepper 的 tableviewcell。这是 tableviewcell 代码:

class ShoppingCartItemCell: UITableViewCell {
static let reuseIdentifier = "ShoppingCartItemCell"

@IBOutlet weak var itemImage: UIImageView!
@IBOutlet weak var itemNameLabel: UILabel!
@IBOutlet weak var itemProviderLabel: UILabel!
@IBOutlet weak var itemPriceLabel: UILabel!
@IBOutlet weak var itemQuantityText: UITextField!
@IBOutlet weak var quantityStepper: UIStepper!

var oldValue = 0.0

var itemName = "" {
didSet {
itemNameLabel.text = itemName
}
}

var itemProvider = "" {
didSet {
itemProviderLabel.text = itemProvider
}
}

var itemPrice = "" {
didSet {
itemPriceLabel.text = itemPrice
}
}

var itemQuantity = "" {
didSet {
itemQuantityText.text = itemQuantity
}
}
}

这是 TableView 中的 uistepper 代码:

class ShoppingCartViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
@IBAction func quantityStepper(_ sender: UIStepper) {
ShoppingCartItemCell.itemQuantity = "\(Int(sender.value))"// this way is not possible...
// How to update the quantityStepper value in ShoppingCartItemCell class here
}
}

如何更新 ShoppingCartViewController 类中的 quantityStepper 值?有些人会告诉我在 ShoppingCartItemCell 类中创建 quantityStepper 的 @IBAction,但我的业务逻辑必须这样做。请帮忙。谢谢大家。

最佳答案

我强烈推荐在 Swift 4 中使用 Key-Value Observation,它很容易实现

在单元格中创建一个 NSKeyValueObservation 属性

var observation : NSKeyValueObservation?

cellForRowAt 的 View Controller 中设置步进器和标签的值,添加观察者

let item = dataSource[indexPath.row] // assuming `dataSource` is the data source array
cell.quantityStepper.value = item.quantity
cell.itemQuantityText.text = "\(item.quantity)"
cell.observation = cell.quantityStepper.observe(\.value, options: [.new]) { (stepper, change) in
cell.itemQuantityText.text = "\(change.newValue!)"
// update the data model for example
item.quantity = change.newValue!
}

最后,在单元格离开屏幕后,您必须在 didEndDisplaying 中移除观察者。

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
(cell as! ShoppingCartItemCell).observation = nil
}

没有IBAction,没有协议(protocol)/委托(delegate)。它非常简单高效。

关于ios - swift - 如何设置另一个类的 UIStepper 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49832352/

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