使用Objective-C
,我可以setText
通过以下代码覆盖该功能。该text
是的属性UITextField
为一些自定义的UI设计,和我子分类。
- (void)setText:(NSString *)text
{
[super setText:text];
....
}
我的问题是,斯威夫特该怎么做?
setText
使用Swift编程时没有此类功能。如何使用Swift覆盖属性的setter
和getter
方法?
在的子类中UITextField
,覆盖text
属性:
override public var text:String? {
didSet {
NSLog("text = \(text)")
}
}
但是请注意,在更改属性后将didSet
调用此观察器,因此由于已被替换,因此您无法决定恢复为先前的值。如果要在更改值之前执行操作,则可以使用观察器,该观察器在更改值之前被调用。willSet
override public var text:String? {
didSet {
NSLog("text = \(text)")
}
willSet {
NSLog("will change from \(text) to \(newValue)")
}
}
这个代码的小例子:
var testTextfield = MyTextFieldClass()
testTextfield.text = "test"
testTextfield.text = "test1"
输出是
will change from Optional("") to Optional("test")
text = Optional("test")
will change from Optional("test") to Optional("test1")
Optional("test1")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句