我有一个类似的UIView子类:
class AView: UIView {
var aString = "A String"
var aBool = true
override func didMoveToSuperview() {
func doSomethingWithTheString() {
if aBool {
doSomething(withString: aString)
}
}
}
}
然后,我将UIView添加到情节提要中,并将其类设置为
AView
。我将其链接到我的视图控制器,并执行以下操作:@IBOutlet weak var aView: AView!
override func viewDidLoad() {
aView.aBool = false
aView.aString = "Another String"
}
问题是,即使将
doSomethingWithTheString()
更改为aBool
,true
仍然是"A String"
,而aString仍然是viewDidLoad()
。那么在
AView
中是否可以放置doSomethingWithTheString()
以便仅在设置了所有属性后才能调用它?我希望didMoveToSuperview()
可以解决问题,但显然还为时过早。我曾想在属性的设置器中调用它,但我不知道将设置哪些属性,哪些将保留其默认值,并且仅应在设置了最后一个属性时才调用它。
最佳答案
将aString和aBool放入字典(aDictionary)中,然后声明
var aDictionary: NSDictionary? {
didSet{
doSomethingWithTheString()
}
}
当然,请更改doSomethingWithTheString()以使用字典