我有一个像这样的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
且aString仍为"A String"
时,即使我在viewDidLoad()
更改了它们。 / p>
那么在AView
中的某个地方我可以放doSomethingWithTheString()
只有在设置了所有属性后才能调用它吗?我希望didMoveToSuperview()
可以做到这一点,但显然现在还为时尚早。
我想在一个属性的设置器中调用它,但我不知道将设置哪些属性以及哪些属性将保留默认值,并且只应在最后一个属性调用时调用它已经确定。
答案 0 :(得分:1)
将aString和aBool放入字典(aDictionary)然后声明
var aDictionary: NSDictionary? {
didSet{
doSomethingWithTheString()
}
}
当然要改变doSomethingWithTheString()以使用字典