Использование кнопки всплывающего окна в Master-Detail
-
28-10-2019 - |
Вопрос
Приложение Core Data на основе «Мой документ» (с использованием привязок в IB) имеет две сущности: Сотрудник (с атрибутом employeeName ) и Табель учета рабочего времени . (с атрибутами timeDescription и entryDate ). Сотрудник имеет отношение один ( employeeDetails ) ко многим ( employeeTimeSheet ) с TimeSheet .
Я создаю Master-Detail для записи TimeSheet.
Для мастера у меня есть таблица с одним столбцом, которая имеет значение , привязанное к: EmployeeController (NSArrayController, использующий объект Employee), schemeObjects , employeeName .
У меня есть detailController (еще один NSArrayController), который настроен как NSMutableDictionary, который имеет contentSet , привязанный к EmployeeController , selection , < strong> employeeTimeSheet .
Затем у меня есть Detail tableView с тремя столбцами, соответствующие значения привязаны к DetailController , schemeObjects , employeeDetails.employeeName (столбец 0), entryDate (столбец 1) и timeDescription (столбец 2).
Теперь все работает нормально, я могу выбрать сотрудника из главной таблицы, а подробная таблица показывает все записи табеля рабочего времени, связанные с этим сотрудником. Могу добавлять записи, используя выбранного сотрудника, все отлично работает.
Моя проблема в том, что вместо того, чтобы иметь tableView в качестве основного представления, я хотел иметь на нем NSPopupButton, из которого я мог бы выбрать сотрудника и просмотреть все временные записи, связанные с этим сотрудником.
Я пробовал каждую комбинацию содержимого, значения, упорядоченных объектов, selectedObject (s) и т. д. с каждой комбинацией имеющихся у меня контроллеров, но не могу заставить NSPopupButton вести себя так же, как и для таблицы с одним столбцом.
Я тщетно искал дополнительную информацию по этому поводу и несколько раз читал документацию по привязкам, но все время путаюсь. Я считаю, что это должно быть относительно просто, но я просто не могу этого понять. Я ломал голову почти два дня, прежде чем опубликовать здесь.
Кто-нибудь может указать, в чем я ошибаюсь? Я бы разместил код, но это не совсем подходит, потому что это в основном вещь IB.
Билли.
Решение 2
Хорошо, я нашла.Я знал, что после публикации здесь я сразу его найду.
Я связал NSPopupButton content с EmployeeController , arорядоченными объектами , contentValue с EmployeeController , schemeObjects , employeeName , а его selectedIndex равно EmployeeController , selectionIndex .
Отлично работает.
Билли.
Другие советы
Между прочим: detailController будет заполнен новым объектом сотрудника "автоматически".Убедитесь, что вы установили "managedObjectContext" на тот же контроллер (employeeController).