gpt4 book ai didi

ios - 为什么我不能直接设置一些类属性?

转载 作者:行者123 更新时间:2023-12-01 19:32:07 26 4
gpt4 key购买 nike

这可能是我的一些误解,但我不明白为什么这不起作用。

我创建了一个 UITableViewCell 子类,如下所示:

class MenuCell: UITableViewCell {

var mcImage: String
var mcLabel: String

init(mcImage: String, mcLabel: String) {
self.mcImage = mcImage
self.mcLabel = mcLabel

super.init(style: .default, reuseIdentifier: "reuseIdentifier")

setupView()
}

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

func setupView() {
let mcImageView = UIImageView()
let mcLabelView = UILabel()

mcImageView.image = UIImage(systemName: mcImage)
mcLabelView.text = mcLabel

// Rest of setup (font, colors, positions...)

addSubview(mcImageView)
addSubview(mcLabelView)
}}

如果在我的 ViewController 我写:
var firstCell = MenuCell(mcImage: "plus.circle", mcLabel: "Some text")

它创建对象并完美运行,我可以访问我的对象属性,但为什么我不能设置这样的属性:
firstCell.mcImage = "plus.circle"   // This doesn't work

它只是忽略了我,但是我可以设置任何 UITableViewCell 属性:
firstCell.accessoryType = .none   // This works

最佳答案

那么它将设置mcImage的值到“plus.circle”,但你看不到影响......因为你没有调用setupView()在给它赋值后...在 setupView()您正在使用此值创建带有此图像的 imageView 的函数

您可以像这样编辑您的类(class)

     class MenuCell: UITableViewCell {

private let mcImageView = UIImageView()
private let mcLabelView = UILabel()


var mcImage: String {
didSet{
self.mcImageView.image = UIImage(systemName: mcImage)
}
}
var mcLabel: String {
didSet{
self.mcLabelView.text = mcLabel
}
}

init(mcImage: String, mcLabel: String) {
self.mcImage = mcImage
self.mcLabel = mcLabel


super.init(style: .default, reuseIdentifier: "reuseIdentifier")
addSubview(mcImageView)
addSubview(mcLabelView)
setupView()
}
func setupView() {


// Rest of setup (font, colors, positions...)


}
override func prepareForReuse() {
super.prepareForReuse()
mcImageView.image = nil
mcLabelView.text = ""
}

}

这样每次您设置图像字符串的值时......它都会刷新您的 View

关于ios - 为什么我不能直接设置一些类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62028739/

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