gpt4 book ai didi

swift - UIView 的子类不调用 didSet

转载 作者:行者123 更新时间:2023-11-28 10:29:04 26 4
gpt4 key购买 nike

我有一个名为 BaseView 的 UIView 子类。在 BaseView 的子类中,我用一些代码创建了 didSet。在 UIViewController 中,我初始化了 BaseView 的这个子类,他没有调用他的 didSet

基础 View 代码:

class BaseView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
setupViews()
}

func setupViews() { }

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

BaseView代码的子类:

class DetailProductView: BaseView {

var product: Product? {
didSet {
productImage.image = UIImage(named: (product?.productImageName)!)
productTitle.text = product?.title
productCompositionLabel.text = product?.description
productPriceLabel.text = "₽" + product!.productPrice!.stringValue
productWeightLabel.text = product!.productWeight!.stringValue + "г."
}
}

UIViewController代码:

class DetailProductController: UIViewController {

var product: Product?

override func viewDidLoad() {
super.viewDidLoad()

view.backgroundColor = .white

let productView = DetailProductView(frame: self.view.bounds)
view.addSubview(productView)
view.layoutSubviews()
}
}

最佳答案

一切都是正确的。您创建了 DetailProductView 的实例,但您从未为其 product 属性设置任何值。因此 didSet 从未被调用(因为你没有设置任何东西)。

如果你想调用它,你应该为这个属性设置任何值。

关于swift - UIView 的子类不调用 didSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57133894/

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