私は、enumで定義された異なる状態のUIViewを持っています。 状態を変更すると、backgroundColorプロパティを更新したいと思います。 動作しません。 viewDidLoadで私のビューコントローラでプロパティのdidSetでUIViewのbackgroundColorを変更するにはどうすればよいですか?
enum State {
case lock
case unlock
case done
}
@IBDesignable
class DeviceView: UIView {
var state:State = .lock {
didSet(newValue) {
print("PRINT didSet \(newValue)")
switch newValue {
case .unlock:
self.backgroundColor = green
}
self.setNeedsDisplay()
}
}
func initDevice(type:Type) {
self.state = state
}
:
override func viewDidLoad() {
device1View.initDevice(state: .lock)
print("PRINT 1 \(device1View.state)")
}
後で別の場所で、私は私のDeviceViewの状態を変更する必要が
print("PRINT 2 \(device1View.state)")
device1View.state = .unlock
print("PRINT new 3 \(device1View.state)")
結果:
PRINT didSet lock
PRINT 1 lock
PRINT 2 lock
PRINT didSet lock <--- ???
PRINT new 3 done
...など私のバckgroundColorは更新されません。
なぜ最後のセットが「ロック」なのか分かりません。それはいいえ "ロックを解除する必要がありますか? 私の背景色が更新されないのはその理由だと思います。
シンプルで効果的です。 – cmii