将 NSPopupbutton 绑定到 类 的数组
binding NSPopupbutton to an array of classes
我在将 NSPopUpButton 绑定到 NSArrayController 时遇到困难。
数组控制器管理 class 植物的数组(植物),它有一个 属性 命名的 commonName,它应该列在按钮中。我已经搜索了几天,但无法发现为什么这不起作用。我能够让按钮显示字符串数组的元素,但不能使用植物数组。程序运行时,按钮没有元素,点击没有反应。
我提供了属性和绑定的屏幕截图,但这里有一个描述:
数组控制器
- 属性:模式=Class; Class Name = TestDB.Plant (TestDB是
项目名称)
- 绑定:绑定到视图控制器;模型键
路径=植物
按钮绑定
- 内容:绑定到数组控制器;控制器键 = arrangedObjects
- 内容值:绑定到数组控制器;控制器键 =
安排对象;模型关键路径 = objectValue.commonName
这是来自 ViewController 的代码:
class ViewController: NSViewController {
@IBInspectable var plants: [Plant] = []
@IBOutlet weak var plantPopUp: NSPopUpButton!
override func viewDidLoad() {
super.viewDidLoad()
//the real list will be pulled from a database, but I'm using
//this to test binding the button
plants = [Plant(commonName: "Asparagus", scientificName: "Asparagus officials"),
Plant(commonName: "Beet", scientificName: "Beta vulgaris")]
//to redraw the button?? Doesn't change anything with or without
plantPopUp.needsLayout.true
}
}
这是 class 工厂的代码:
@objc class Plant: NSObject {
@objc dynamic var commonName: String
@objc dynamic var scientificName: String
init(commonName: String, scientificName: String) {
self.commonName = commonName
self.scientificName = scientificName
}
}
这是 NSArrayController 和 NSPopupButton 的属性和绑定的屏幕截图。非常感谢任何帮助。
两个变化:
你必须plants
也兼容 KVC
@IBInspectable @objc dynamic var plants: [Plant] = []
按钮绑定 - 内容值:绑定到 ... 模型键路径 = commonName(删除 objectValue.
)
我在将 NSPopUpButton 绑定到 NSArrayController 时遇到困难。 数组控制器管理 class 植物的数组(植物),它有一个 属性 命名的 commonName,它应该列在按钮中。我已经搜索了几天,但无法发现为什么这不起作用。我能够让按钮显示字符串数组的元素,但不能使用植物数组。程序运行时,按钮没有元素,点击没有反应。
我提供了属性和绑定的屏幕截图,但这里有一个描述:
数组控制器
- 属性:模式=Class; Class Name = TestDB.Plant (TestDB是 项目名称)
- 绑定:绑定到视图控制器;模型键 路径=植物
按钮绑定
- 内容:绑定到数组控制器;控制器键 = arrangedObjects
- 内容值:绑定到数组控制器;控制器键 = 安排对象;模型关键路径 = objectValue.commonName
这是来自 ViewController 的代码:
class ViewController: NSViewController {
@IBInspectable var plants: [Plant] = []
@IBOutlet weak var plantPopUp: NSPopUpButton!
override func viewDidLoad() {
super.viewDidLoad()
//the real list will be pulled from a database, but I'm using
//this to test binding the button
plants = [Plant(commonName: "Asparagus", scientificName: "Asparagus officials"),
Plant(commonName: "Beet", scientificName: "Beta vulgaris")]
//to redraw the button?? Doesn't change anything with or without
plantPopUp.needsLayout.true
}
}
这是 class 工厂的代码:
@objc class Plant: NSObject {
@objc dynamic var commonName: String
@objc dynamic var scientificName: String
init(commonName: String, scientificName: String) {
self.commonName = commonName
self.scientificName = scientificName
}
}
这是 NSArrayController 和 NSPopupButton 的属性和绑定的屏幕截图。非常感谢任何帮助。
两个变化:
你必须
plants
也兼容 KVC@IBInspectable @objc dynamic var plants: [Plant] = []
按钮绑定 - 内容值:绑定到 ... 模型键路径 = commonName(删除
objectValue.
)