Como faço para implementar uma lista personalizada de Cacau?
-
12-09-2019 - |
Pergunta
Eu quero construir um Cacau App com uma lista de entradas muito semelhante a lista de Afazeres de Coisas.app (consulte o screencast).A questão é se eu deveria usar
- um TableView,
- um CollectionView ou
- um modo de exibição da web.
Eu acho que poderia trabalhar com todos eles, mas o que atende os seguintes requisitos melhor?
- ter uma lista de entradas -> 1 colunas e muitas linhas
- reordenação com drag & drop
- selecionar entradas individuais & use as teclas para ações como apagar
- abrir uma entrada:a linha deve se expandir para mostrar mais campos de entrada
- aparência personalizada:cantos arredondados, de sombra, de fundo gradiente
Até agora a minha pesquisa diz que o TableView possui a maioria das funcionalidades, mas é mais difícil para personalizar sua aparência, o CollectionView não tem drag & drop (certo?) mas é fácil para o design e o modo de exibição da web seria preciso muito esforço para não prejudicar a experiência do usuário e eu não posso ligar o meu modelo diretamente para campos de entrada.
Quais os prós e contras que estou em falta e o que você recomendaria para usar?
Solução
Uma Webview não faz sentido. Você também pode criar um aplicativo da Web se usar uma WebView. Um NSCOLLECTIONVIEW é mais para dados como dados, como listagens de TV por hora.
O NSTableView é o único que faz sentido neste caso. Eu implementei todos os 5 pontos de bala com um NSTableView sem problemas. Você precisa estender o NStableView e fazer algum desenho personalizado para a aparência personalizada. Essa é a parte mais difícil.
Outras dicas
- Abra uma entrada: a linha deve se expandir para mostrar mais campos de entrada
Você precisa de um vista de destaques. Uma visualização de tabela é para listas planas.
Observe que o NSOUTLINEVIEW é uma subclasse do NSTableView; portanto, todos os recursos de tabela também funcionam em uma exibição de esboço.
Há pessoas que já fizeram isso. Um que usei com sucesso é de Matteo Bertozzi e está disponível aqui: http://th30z.netsons.org/2009/03/cocoa-sidebar-with-badges-take-2/ Pode levar um pedaço de massagem para fazê-lo funcionar corretamente (especialmente se você precisar de um comportamento complexo de arrastar e soltar), mas para funcionalidade básica, como obter os títulos e itens da seção na lista, funciona excelentemente.
Editar: isso tem surgir antes e é uma pergunta comum na lista de e-mail de cacau-Dev. Aqui estão algumas outras opções.
Apenas deu uma olhada nas Coisas.próprio aplicativo usando "F-script em qualquer lugar".
Eles usaram uma subclasse de NSTableView chamado "DetailTableView", que apresenta o condensado itens para fazer.Recolhido todo os itens são implementados usando uma célula personalizado chamado "ToDoCell", mas expandido olhar que você começa quando a edição é interessante.Nesse caso, eles tem um modo de exibição personalizado chamado "ToDoEditView", que é inserido como uma visualização secundária do DetailTableView, quando necessário.Eu suspeito que esta edição de exibição é adicionado temporariamente como uma visualização secundária no local correto e a correspondente linha da tableview é redimensionada temporariamente enquanto ele estiver presente.
Tudo muito especulativo ..Eu adoraria saber os detalhes de como isso foi feito.É uma excelente INTERFACE do usuário.
Estou abordando o mesmo problema no meu aplicativo (com uma grande lista semelhante à lista de coisas para fazer) e acho que uma visualização de tabela faria muito sentido aqui.
O truque é que suas células ("linhas") se expandam quando clicadas duas vezes. Isso é sobre todo o progresso que fiz até agora.