我在 Swift 中以編程方式創建了一個帶有標簽的堆疊視圖。但是,我試圖找出如何以編程方式更新標簽?(我沒有使用故事板或 IBOutlets)
let LabelStack: UIStackView = {
let label1: UILabel = {
let label = UILabel()
label.text = "Label 1"
label.font = .systemFont(ofSize: 14, weight: .bold)
label.numberOfLines = 0
label.backgroundColor = .clear
label.textAlignment = .left
label.sizeToFit()
return label
}()
let label2: UILabel = {
let label = UILabel()
label.text = "Label 2"
label.font = .systemFont(ofSize: 14, weight: .bold)
label.numberOfLines = 0
label.backgroundColor = .clear
label.textAlignment = .left
label.sizeToFit()
return label
}()
let stack = UIStackView(arrangedSubviews: [label1, label2])
stack.distribution = .equalSpacing
stack.spacing = 4.0
return stack
}()
嘗試使用函式更新標簽文本時,我不確定如何訪問標簽屬性以進行此更改。通常,對于在堆疊外創建的標簽,我可以簡單地使用:
func updateLabel() {
label1.text = "Updated Label 1 text"
label2.text = "Updated Label 2 text"
}
使用標簽訪問位于 UIStackview 中的這些標簽屬性的語法是什么?
uj5u.com熱心網友回復:
你可以把它們放在外面 let labelStack: UIStackView = {
let label1: UILabel = {
let label = UILabel()
label.text = "Label 1"
label.font = .systemFont(ofSize: 14, weight: .bold)
label.numberOfLines = 0
label.backgroundColor = .clear
label.textAlignment = .left
label.sizeToFit()
return label
}()
let label2: UILabel = {
let label = UILabel()
label.text = "Label 2"
label.font = .systemFont(ofSize: 14, weight: .bold)
label.numberOfLines = 0
label.backgroundColor = .clear
label.textAlignment = .left
label.sizeToFit()
return label
}()
let labelStack: UIStackView = {
let stack = UIStackView(arrangedSubviews: [label1, label2])
stack.distribution = .equalSpacing
stack.spacing = 4.0
return stack
}()
或者這樣做
if let label1 = labelStack.arrangedSubviews.first as? UILabel {
// proceed
}
if let label2 = labelStack.arrangedSubviews.last as? UILabel {
// proceed
}
uj5u.com熱心網友回復:
你可以在外面創建它們。但這將需要您稍后添加排列的子視圖,因為它尚未初始化。所以你可以讓 stackView Lazy,它等待 init 運行:
let label1: UILabel = {
let label = UILabel()
label.text = "Label 1"
label.font = .systemFont(ofSize: 14, weight: .bold)
label.numberOfLines = 0
label.backgroundColor = .clear
label.textAlignment = .left
label.sizeToFit()
return label
}()
let label2: UILabel = {
let label = UILabel()
label.text = "Label 2"
label.font = .systemFont(ofSize: 14, weight: .bold)
label.numberOfLines = 0
label.backgroundColor = .clear
label.textAlignment = .left
label.sizeToFit()
return label
}()
lazy var labelStack: UIStackView = {
let stack = UIStackView(arrangedSubviews: [label1, label2])
stack.distribution = .equalSpacing
stack.spacing = 4
return stack
}()
如果您必須靜態標記和 2 個文本,您可以這樣做:
zip(labelStack.arrangedSubviews, ["textupdate1", "textupdate2"]).forEach { (element value) in
(element as? UILabel)?.text = value
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/355020.html
上一篇:隨機選擇歌曲的方式/Swift
