Многоуровневая привязка NSPopupButton
Я пытаюсь использовать два NSPopupButton, которые связаны друг с другом, и у меня возникают проблемы с привязками на кнопке "ребенок".
У меня есть три основных типа сущностей данных: Order
, Client
, а также Station
, Station
-> Client
это много к 1, так что Client
имеет несколько Station
, но Station
можно указать только на одного клиента.
Order
имеет один Station
прикрепленный к нему, поэтому я создал все привязки, как показано ниже. Я могу правильно выбрать любого клиента из первого раскрывающегося списка, но затем раскрывающийся список станций просто показывает текущую выбранную станцию. Я не вижу всех доступных станций, и если я меняю клиента, я не вижу нового списка станций для выбора.
Контроллер заказов
NSObjectController, связанный с order
свойство объекта в контроллере представления.
Контроллер массива клиентов
Просто привязывается к представлению регулятора viewObjectContext для получения всех клиентов.
Контроллер массива станций
Клиент NSPopupButton
Станция NSPopupButton
1 ответ
Выбранное значение клиентской всплывающей кнопки используется для фильтрации станций, оно не должно менять клиента станции из заказа. Привязать выбранный индекс (вместо выбранного объекта) всплывающей кнопки клиента к контроллеру клиентского массива, ключ контроллера selectionIndex
, Путь к ключевой модели отсутствует.
Привязать выбранный объект всплывающей кнопки станции к контроллеру объекта заказа, клавише контроллера selection
, Путь к ключевой модели station
,
Когда пользователь выбирает клиента, выбранная станция остается станцией заказа. Если у этой станции другой клиент, всплывающая кнопка станции автоматически не выбирает другую станцию. Вы можете исправить это с помощью всплывающей кнопки клиента. Например:
- (IBAction)clientAction:(id)sender {
NSArray *stations = self.stationArrayController.arrangedObjects;
if (![stations containsObject:order.station]) {
if (stations.count > 0)
self.order.station = stations[0];
else
self.order.station = nil;
}
}