我如何监听 UILabel 内容变化?
How can I listen for UILabel content changes?
我想监听UIlabel中的内容变化,防止其长度大于7时发生变化,请问怎么办?我试过 set / get / willset / didset。好像不能满足我的需求
我写了一个简单的demo,当我按下按钮时,在显示区域添加一个数字。我不希望他的长度超出我的预期
在我的实际项目中,我正在开发一个计算器
我能想到的就是判断displayValue的长度,但是这样做会使我的代码冗长
要计算标签内的字符数,您可以像这样在文本中使用计数方法 属性
@IBOutlet weak var testLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
testLabel.text = "duck"
print(testLabel.text.count) //return 4
}
对于用户操作,您不能使用 UILabel,因为它不是用户交互的,您必须使用 UITextField 并连接到一个 UIAction 或更好地向我们解释您想要做什么。
didSet 可以更好地帮助你。
在代码的第 6 行中添加此代码。
var displayValue: String = "" {
didSet {
if displayValue.count <= 7 {
customLabel.text = displayValue
}
}
}
然后在你的动作函数中,你只需要这样做。
@IBAction func clickBtn( _ sender: Any) {
displayValue = displayValue + "0"
}
我想监听UIlabel中的内容变化,防止其长度大于7时发生变化,请问怎么办?我试过 set / get / willset / didset。好像不能满足我的需求
我写了一个简单的demo,当我按下按钮时,在显示区域添加一个数字。我不希望他的长度超出我的预期
在我的实际项目中,我正在开发一个计算器 我能想到的就是判断displayValue的长度,但是这样做会使我的代码冗长
要计算标签内的字符数,您可以像这样在文本中使用计数方法 属性
@IBOutlet weak var testLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
testLabel.text = "duck"
print(testLabel.text.count) //return 4
}
对于用户操作,您不能使用 UILabel,因为它不是用户交互的,您必须使用 UITextField 并连接到一个 UIAction 或更好地向我们解释您想要做什么。
didSet 可以更好地帮助你。 在代码的第 6 行中添加此代码。
var displayValue: String = "" {
didSet {
if displayValue.count <= 7 {
customLabel.text = displayValue
}
}
}
然后在你的动作函数中,你只需要这样做。
@IBAction func clickBtn( _ sender: Any) {
displayValue = displayValue + "0"
}