Isso depende dos requisitos. A maneira como o aplicativo flui determina qual tipo de UI integrar ao aplicativo.
As pessoas usam principalmente o UICollectionview
para criar tipos de UIs com várias imagens mostradas em uma grade. Isso teria uma lógica complexa usando UITableView
, mas com UICollectionview
, seria fácil.
Ao usar UICollectionview
, você não precisa definir botões com tags ou outras coisas obtendo valores de itens selecionados. Você pode simplesmente obter -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
e entrar UITableViewDelegate
:
`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`
Você obtém a linha selecionada em vez do item, portanto, para criar uma grade ou itens modificados, UICollectionview
é melhor usar .
Para os detalhes de listagem de cada item, as pessoas usam UITableView
porque mostra mais informações sobre cada item.
Apple Docs:
Referência de classe UICollectionView
A classe UICollectionView gerencia uma coleção ordenada de itens de dados e os apresenta usando layouts personalizáveis. As visualizações de coleção fornecem a mesma função geral que as visualizações de tabela, exceto que uma visualização de coleção é capaz de suportar mais do que apenas layouts de coluna única. As visualizações de coleção suportam layouts personalizáveis que podem ser usados para implementar grades de várias colunas, layouts lado a lado, layouts circulares e muito mais. Você pode até mesmo alterar o layout de uma visualização de coleção dinamicamente, se desejar.
Referência de classe UITableView
Uma visualização de tabela exibe uma lista de itens em uma única coluna. UITableView é uma subclasse de UIScrollView, que permite aos usuários rolar pela tabela, embora UITableView permita apenas a rolagem vertical. As células que constituem os itens individuais da tabela são objetos UITableViewCell; UITableView usa esses objetos para desenhar as linhas visíveis da tabela. As células têm conteúdo - títulos e imagens - e podem ter, próximo à borda direita, visualizações acessórias. As visualizações de acessórios padrão são indicadores de divulgação ou botões de divulgação de detalhes; o primeiro leva ao próximo nível em uma hierarquia de dados e o último leva a uma visão detalhada de um item selecionado. As visualizações acessórias também podem ser controles de estrutura, como interruptores e controles deslizantes, ou podem ser visualizações personalizadas. As visualizações de tabela podem entrar em um modo de edição onde os usuários podem inserir, excluir e reordenar as linhas da tabela.
Aqui estão meus critérios:
Se um UITableView pode fazer isso, use-o
Se um UITableView precisa de muito código para fazer isso ou não pode fazer nada, use UICollectionView.
Você deve considerar as restrições de UITableView antes de tomar uma decisão: é uma única coluna. E você só pode personalizar as células, mas não os planos de fundo das seções e tal. Então, se você tem uma lista direta de coisas sem enfeites extras - que parece uma visão padrão do iOS, basicamente - então use UITableview. Se você tiver inserções personalizadas ou uma borda ao redor de cada seção, use UICollectionView.
Na verdade, estou considerando UICollectionView para todas as coisas, simplesmente porque é muito caro quando você começa a desenvolver sua visualização como uma visualização de tabela e, mais tarde, descobre que não pode fazer aquilo que você precisa. Experiência em primeira mão;)Edite depois de ainda mais experiência com os dois: Desconsidere o último parágrafo. UICollectionView requer muito código clichê para funcionar como um UITableView. Use UICollectionView somente quando realmente necessário. ;)
fonte
Para listas simples e navegação para frente / para trás, use
UITableView
.Se você precisa de um alto grau de personalização, use
UICollectionView
.De modo geral, no desenvolvimento de software, é melhor escolher a abordagem que representa "A Coisa Mais Simples Possível".
EDIT: A partir do iOS 14,
UICollectionView
agora pode fazer listas também e agora é a abordagem recomendada. Consulte esta sessão do WWDC20 para obter mais informações e detalhes de implementação: https://developer.apple.com/videos/play/wwdc2020/10026/fonte
De acordo com meu ponto de vista, a principal diferença entre collectionView e tableView é que
Espero que ajude você.
fonte
Se você escolher UITableView para iPhone, certifique-se de considerar a estratégia do iPad primeiro. Se você deseja um layout específico do iPad, pode desejar que o layout de coluna única se torne uma grade.
fonte
Embora não seja obrigatório, sempre uso uma visão de coleção. Dessa forma, posso adaptar facilmente como minhas coleções são apresentadas para diferentes resoluções. Uma vantagem é que ele está pronto para adicionar rapidamente novos tipos de células ao refatorar no futuro.
Não vejo motivo para tableviews. É muito simples usar uma visão de coleção para representar uma tabela. IMO.
fonte
É totalmente dependente de como seus dados serão mostrados. Como mencionado por muitos acima, se você precisar de apenas um único conjunto de dados e que não seja complexo, vá para
UITableView
outro usoUICollectionView
.UICollectionView
é fácil de personalizar.Se você está lidando com várias alturas de células ou algo assim, vá em frente
UICollectionView
.fonte
Pela minha experiência pessoal, os dois elementos devem ser comparados apenas vagamente.
Vista de mesa
Um TableView é um elemento de IU projetado para mostrar dados em formato de lista. Existem certas funcionalidades que vêm como padrão com um UITableView, como:
Os elementos acima aumentam a usabilidade dos dados ao exibir e interagir em formato de lista. Como ver e-mails.
CollectionView
Um CollectionView é um elemento de IU projetado para mostrar conteúdo usando um layout personalizado (geralmente qualquer coisa que não seja uma lista). CollectionViews melhora a funcionalidade de exibição de dados em estilos de layout totalmente personalizados e também altera layouts dinamicamente em tempo real. Alguns exemplos são:
CollectionViews também permite várias seleções.
Conclusão
Como você pode ver acima, ambos têm casos de uso completamente diferentes e são projetados para aprimorar o desenvolvimento e a usabilidade de seus próprios conjuntos de dados específicos.
Se você deseja exibir qualquer coisa em um estilo de lista com as seguintes interações: - Adicionando - Excluindo - Reordenando Então, um UITableView simplificará este processo, fornecendo o suporte pronto para uso.
De qualquer outra forma, você deve aproveitar os benefícios de CollectionView, pois tem mais flexibilidade.
fonte
Ambos dependem dos requisitos. As visualizações de tabela também oferecem suporte para uma variedade de cenários de edição. Este suporte não foi implementado nas classes Collection View. Se você estiver convertendo a partir de uma Visualização de Tabela que depende desses métodos, espere fazer um trabalho pesado extra na Visualização de Coleção. Os cabeçalhos de seção da Visualização da coleção podem ser colocados em qualquer lugar da visualização. e UITableView não precisa definir botões com tags ou outras coisas obtendo valores de itens selecionados.
fonte
Na prática, todo mundo usa UICollectionView que eu encontrei, quando eles só precisam de um UITableView. "É unidimensional. Ele sobe e desce. Por que você está adicionando métodos de delegação desnecessários para layout E dados?". Certa vez, passei 2 horas extras ajudando uma startup a descobrir por que seu UICollectionViewCell foi esmagado porque o proprietário, que não leu o manual de Animações, nem HIG, nem o guia UICollectionView, decidiu usá-lo e adicionar alturas e animes variáveis. Desnecessário dizer que ele deu a si mesmo uma dor de cabeça e muito tempo perdido em um problema não crítico para os negócios que poderia ter evitado simplesmente usando uma célula de tabela, já que não há delegado de layout extra + Nib.
Deixe-me ver se entendi, eu sou totalmente favorável ao UICollectionView quando seus dados e display precisam deles. Eles são muito poderosos. Mas, na prática, a maioria das pessoas que conheço os usa em listas.
Isso traz outra falha. Eles também são usados em listas curtas e constantes que nunca mudarão. Nesse caso, basta fazer um Xib. Ou escreva uma visualização personalizada que os empilhe. Por quê? Porque você não precisa do gerenciamento de memória para 5 conjuntos de etiquetas com um botão ou interruptor. Se eles podem mudar, então sim, use uma lista. Se você quer física, então UICollectionView funciona bem com alguns efeitos legais. Mas você realmente precisa adicionar 5 métodos de delegação e um sistema de layout para 5 rótulos que nunca serão movidos?
Além disso, não estou esquecendo que o iOS agora também tem uma visão de empilhamento nativa. Nunca consigo fazer com que ele se deforme como quero, embora seja bastante adepto dos sistemas 2D e de animação, então nunca uso o integrado.
Tudo o que estou dizendo é, defina seus requisitos. Talvez você não precise de nenhum desses, se sua IU não estiver adicionando / removendo itens e se atualizando. Ou talvez você queira escrever um jogo de cartas e jogá-los virtualmente sobre uma mesa e, em seguida, usar UICollectionView com um sistema de física como guia de layout.
fonte
Com base em nossa necessidade, estamos escolhendo TableView ou CollectionView.
Exemplo:
fonte
Eu tive esse problema no meu projeto atual. Qual usar. No meu caso era realmente simples. Eu precisava de ambos. Eu precisava que minha visão fosse semelhante a UITableView e também para alterar sua mudança / layout. Então, UICollectionView foi usado. Também uso UITableView em todos os lugares em que não preciso de personalização extra. Como UiTableView vem com um layout padrão que inclui imagens e texto - eu o uso para simplificar.
fonte
Com base em nossos requisitos, escolhemos a visualização UITableView ou UICollection.
Se quisermos exibir imagens ou itens no tipo grade ou se precisarmos de mais personalização, usamos UICollectionview.
Para listar cada item com detalhes e subdetalhes, usamos UITableView.
UICollectionView: A classe UICollectionView gerencia uma coleção ordenada de itens de dados e os apresenta usando layouts personalizáveis. As visualizações de coleção fornecem a mesma função geral que as visualizações de tabela, exceto que uma visualização de coleção é capaz de suportar mais do que apenas layouts de coluna única.
UITableView: uma visualização de tabela exibe uma lista de itens em uma única coluna. UITableView é uma subclasse de UIScrollView, que permite aos usuários rolar pela tabela, embora UITableView permita apenas a rolagem vertical.
fonte
De acordo com minha visão para exibição em grade, use a exibição de coleção de IU. Todas as outras exibições de lista usam a exibição UITable
fonte
Pessoalmente, acho que o UICollectionView pode fazer a maior parte do trabalho que o UITableview pode fazer. bem, ao mesmo tempo, é mais complexo de usar.
Eu sugiro que você use UICollectionView como TableView apenas no caso de seu gerente alterar os requisitos no futuro.
fonte