我正在尝试将节点的位置(在本例中为我的pointOfView节点)绑定到macOS上的文本字段(但我想它在iOS上是相同的)
我可以绑定(通过.bind
或情节提要),例如scnView.pointOfView.camera.fieldOfView
。但是我无法绑定scnView.pointOfView.position.x
但是,我可以绑定scnView.pointOfView.position
。但这对于文本字段似乎没有用。
详细信息
这就是我得到的
field.bind(.value, to: self, withKeyPath: "scnView.pointOfView.position.x", options: nil)
2019-01-11 11:54:13.987696 + 0100 Scenekit测试模板[45791:1781975]无法在(NSWindow)上设置(contentViewController)用户定义的检查属性:[valueForUndefinedKey:]:此类不是键值编码-符合密钥x。
这里仅绑定.position
答案 0 :(得分:0)
您始终可以使用值转换器获取复合值的特定成分。像这样:
field.bind(.value, to: self, withKeyPath: "scnView.pointOfView.position",
options: [.valueTransformer: PositionXValueTransformer()])
ValueTransformer可能看起来像这样:
class PositionXValueTransformer: ValueTransformer {
override class func transformedValueClass() -> AnyClass {
return NSString.self
}
override class func allowsReverseTransformation() -> Bool {
return false
}
override func transformedValue(_ value: Any?) -> Any? {
guard let position = value as? SCNVector3 else {
return ""
}
return "\(position.x)"
}
}