我正在继承UITextField来构建一个文本字段,用户可以在该文本字段中输入特定货币的特定金额。我希望占位符只是私有或私有。而是设置您想要占位符的货币和金额。然后文本字段自动调整字符串,例如到一定数量的小数等。
以下代码停在: 占位符= oldValue
这是有道理的,因为它不断调用setter并以无限循环结束。我找不到更好的方法来做到这一点,任何人都知道如何才能做到这一点?
由于
var placeholderAmount: Float = 0{
didSet{
self.placeholder = String(self.roundedStringWithAmount(placeholderAmount, to: self.numberOfDecimalPlaces)) + self.currencyString
}
}
override var placeholder: String?{
didSet{
placeholder = oldValue
print("Placeholder Set to CurrencyTextField. Do not do that")
}
}
答案 0 :(得分:1)
您不能限制超类中声明的变量的访问级别。它有点hacky,但你可以设置一个允许不能无限循环的标志:
var ignoreUpdates = false
override var placeholder: String?{
didSet{
if !ignoreUpdates {
ignoreUpdates = true
placeholder = oldValue
ignoreUpdates = false
print("Placeholder Set to CurrencyTextField. Do not do that")
}
}
}
答案 1 :(得分:0)
这应该有用,而且不那么笨拙。
{{1}}