У меня проблемы с привязкой NSPopUpButton к NSArrayController.Контроллер массива управляет массивом (plant) класса Plant, у которого есть свойство с именем commonName, которое должно быть указано в кнопке.Я искал несколько дней, и я не могу понять, почему это не работает.Я могу получить кнопку для отображения элементов массива строк, но не с массивом растений.Когда программа запускается, кнопка не имеет элементов и не реагирует на нажатия.
Я включил скриншот атрибутов и привязок, но вот описание:
ArrayController
- Атрибуты: Mode = Class;Имя класса = TestDB.Plant (TestDB - это название проекта)
- Binding: Bound to View Controller;Путь к ключевой модели = заводы
Связывания кнопок
- Содержимое: привязано к контроллеру массива;Клавиша контроллера = selectedObjects
- Значения содержимого: привязан к контроллеру массива;Клавиша контроллера =ограмма объекта;Путь к ключу модели = 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
}
}
Это код для класса Plant:
@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.Очень благодарен за любую помощь.
Атрибуты и привязки