Usando um botão Popup em Master-Detail
-
28-10-2019 - |
Pergunta
O aplicativo Core Data baseado em Meu Documento (usando ligações em IB) tem duas entidades, Employee (com um atributo employeeName ) e TimeSheet (com atributos timeDescription e entryDate ). Funcionário tem uma relação um ( employeeDetails ) -para-muitos ( employeeTimeSheet ) com TimeSheet .
Estou construindo um Master-Detail configurado para uma entrada do TimeSheet.
Para o Master, tenho uma tableView de uma coluna que tem seu valor vinculado a: EmployeeController (um NSArrayController usando a entidade Employee), arrangementObjects , employeeName .
Eu tenho um detailController (outro NSArrayController) que é configurado como um NSMutableDictionary que tem o contentSet vinculado a EmployeeController , seleção , < strong> employeeTimeSheet .
Tenho então Detail tableView que tem três colunas, com seus respectivos valores vinculados a DetailController , organizadoObjects , employeeDetails.employeeName (coluna 0), entryDate (coluna 1) e timeDescription (coluna 2).
Agora que tudo está funcionando bem, posso selecionar um funcionário na tabela mestre e a tabela detalhada mostra todas as entradas da planilha de horas associadas a esse funcionário. Posso adicionar entradas usando o funcionário selecionado, tudo funciona muito bem.
Meu problema é que, em vez de ter uma tableView como uma visualização Master, eu queria um NSPopupButton em seu lugar, a partir do qual posso selecionar um Employee e visualizar todas as entradas de tempo associadas a esse Employee.
Eu tentei todas as combinações de conteúdo, valor, arranjadosObjetos, objetos selecionados, etc. com todas as combinações dos controladores que tenho, mas não consigo fazer com que o NSPopupButton se comporte de maneira semelhante ao tableView de coluna única.
Procurei em vão por mais informações sobre isso e li a documentação das ligações várias vezes, mas continuo me confundindo. Acho que isso deveria ser relativamente simples, mas simplesmente não consigo entender. Estou quebrando a cabeça há quase dois dias antes de postar aqui.
Alguém pode apontar onde estou errado? Eu postaria o código, mas isso não é apropriado, visto que é principalmente uma coisa do IB.
Billy.
Solução 2
Ok, eu encontrei.Eu sabia que depois de postar aqui, encontraria imediatamente.
Eu limitei NSPopupButton content a EmployeeController , arrangementObjects , contentValue para EmployeeController , storedObjects , employeeName , e é selectedIndex para EmployeeController , selectionIndex .
Funciona muito bem.
Billy.
Outras dicas
A propósito: o detailController será preenchido com um novo objeto funcionário "automaticamente".Certifique-se de definir "managedObjectContext" para o mesmo controlador (employeeController).