在didSet中将UITextField占位符设为私有

时间:2015-11-18 22:38:28

标签: ios swift swift2

我正在继承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")
    }
}

2 个答案:

答案 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}}