Mostrando a data de duas linhas na visualização da tabela, respectivamente em dois campos de texto, via ligação
-
26-09-2019 - |
Pergunta
Eu tenho uma classe nomeada como transação na qual um atributo é a transação que é do tipo nsdate.
Estou usando o NSARRAYController para exibir uma lista de transações em uma exibição de tabela.
Minha exigência é-
Quero mostrar a data na primeira linha em um campo de texto rotulado como "de" e data na última linha em um campo de texto rotulado como "para".
Minhas perguntas é-
Posso conseguir isso via ligação no IB? Se sim, então como?
Obrigado,
Miraaj
Solução
Sim, você pode fazer isso (ou algo parecido), veja o @min e @max operadores de matriz.
Veja como fazer uma versão muito simples disso:
- Open Interface Builder - Crie um novo aplicativo
- Adicione um NSARRAYController, defina -o para preparar automaticamente o conteúdo.
- Adicione uma tabela, rotule as duas colunas
"name"
e"age"
- Adicione um botão (rotulado
"+"
) e dois rótulos (mude o nome paramaxval
,minval
) - Ajude as ligações NSARRAYController da seguinte maneira:
Aqui está o aplicativo em execução (apenas no modo "simular" do Builder de Interface). Para usá -lo, clique em + clique na linha superior da tabela e coloque um nome na primeira coluna e uma idade no segundo. Em seguida, repita para mais algumas pessoas.
Tudo isso parece um pouco enigmático, mas é suficiente. Eu adicionei os rótulos "Max Age" e "Min Age" para maior clareza na minha versão.
Outras dicas
Infelizmente, isso não é algo que as ligações são particularmente boas. Você poderia alcançá -lo, mas seria muito hacky.
o NSTableViewDataSource O protocolo ainda é uma maneira perfeitamente relevante e válida de fornecer dados para uma tabela. Em casos como esses (onde você não está apenas apresentando um conjunto de dados uniformes de vanilha em uma tabela), o protocolo de fonte de dados é a única maneira sã de resolver o problema. Dessa forma, você está no controle total do que a tabela exibe.
A única parte "difícil" é que, se você estiver usando dados principais, sua classe de origem de dados precisará observar o contexto do objeto gerenciado para alterações e recarregar os dados ( - -Reloaddata para atualizar a tabela inteira ou usar -reloaddatafrowondexes: columnindexes : para escolher as linhas que você deseja atualizar).