如何在我的UIView子类中设置所有属性后才能调用函数?

时间:2016-04-04 07:58:28

标签: ios swift uiview

我有一个像这样的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()可以做到这一点,但显然现在还为时尚早。

我想在一个属性的设置器中调用它,但我不知道将设置哪些属性以及哪些属性将保留默认值,并且只应在最后一个属性调用时调用它已经确定。

1 个答案:

答案 0 :(得分:1)

将aString和aBool放入字典(aDictionary)然后声明

var aDictionary: NSDictionary? {
    didSet{
        doSomethingWithTheString()
    }
}

当然要改变doSomethingWithTheString()以使用字典