【发布时间】:2016-03-09 13:16:00
【问题描述】:
我正在学习 KVC 和绑定。目前,我正在尝试将 NSTextField 绑定到计算属性 colorWallStr。我已将滑块的值绑定到相应的颜色变量,并将标签的值绑定到计算属性。
但是,当我移动幻灯片时,标签的内容并没有改变。
// Inside MainWindowController
dynamic var colorRed: CGFloat = 1.0
dynamic var colorGreen: CGFloat = 1.0
dynamic var colorBlue: CGFloat = 0.0
dynamic var colorWallStr: String {
get {
return "R: \(colorRed) G: \(colorGreen) B: \(colorBlue)"
}
}
当我将标签直接绑定到颜色变量时,它工作正常。
感谢@vadian 的回答。现在我可以使用属性的didSet 更新标签来触发更新标签方法(见下文)。
dynamic var colorBlue: CGFloat = 0.0 {
didSet {
updateLabel()
}
}
func updateLabel() {
colorWall = "R: \(colorRed) G: \(colorGreen) B: \(colorBlue)"
}
如果字符串插值中使用的属性不更新封闭的计算属性,那么为什么下面的代码 sn-p 不起作用?
dynamic var colorWall: String {
get {
let red = colorRed
let green = colorGreen
let blue = colorBlue
return "R: \(red) G: \(green) B: \(blue)"
}
}
【问题讨论】:
标签: swift cocoa cocoa-bindings