【发布时间】:2020-08-13 02:02:05
【问题描述】:
我有一个带有 UILabel 的 XIB。我已将 UILabel 引用到我创建的 UIView 类。我可以在初始化视图时使用label.text = "hi" 更改标签。当我尝试从另一个类调用更改时,它不会更改屏幕上的 UILabel(但如果我打印 label.text 它会显示为我设置的内容)。我无法在初始化时让 UILabel 加载文本,因为用户可以随时更改文本。 (switchText() 是从 UITableCell 调用的)
二等
class Second {
func switchText() {
let first = First()
DispatchQueue.main.async {
first.label.text = "bye"
}
}
}
一级
class First: UIView {
let kCONTENT_XIB_NAME = "First"
@IBOutlet var label: UILabel!
@IBOutlet var contentView: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
func commonInit() {
Bundle.main.loadNibNamed(kCONTENT_XIB_NAME, owner: self, options: nil)
contentView.fixInView(self)
}
override func awakeFromNib() {
super.awakeFromNib()
}
}
另外,在我的 XIB 中,我的 UIView 连接到 File's Owner 和 UIView 类中的 contentView。我的标签出口转到文件的所有者,然后转到声明为标签的 UIView 类。
【问题讨论】: