UITableView 대신 UICollectionView를 사용하는 경우


92

iOS6 UICollectionView에 UITableView도입 된의 업그레이드 된 버전과 비슷 하다는 것을 알았지 만 UICollectionView대신 언제 선택해야 UITableView합니까?

여전히 앱을 사용 UITableView하고 UICollectionView있습니다. 무엇이든 UITableView할 수 있다면 사람들이 여전히 사용하는 이유 는 무엇 UITableView입니까? 성능면에서 차이가 있습니까?

감사!

답변:


75

그것은 요구 사항에 따라 다릅니다. 애플리케이션 흐름에 따라 애플리케이션에 통합 할 UI 유형이 결정됩니다.

사람들은 주로 UICollectionview그리드에 여러 이미지가 표시된 UI 유형을 만드는 데 사용합니다 . 이것은를 사용하는 복잡한 논리를 가지고 UITableView있지만을 사용 하면 UICollectionview쉽습니다.

를 사용할 때 UICollectionview선택한 항목 값을 가져 와서 태그 또는 기타 항목으로 버튼을 설정할 필요가 없습니다. 간단하게 다음 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath과 같이 들어갈 수 있습니다 UITableViewDelegate.

`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`

항목 대신 선택한 행을 가져 오므로 그리드 또는 수정 된 항목을 만들 때 사용하는 UICollectionview것이 가장 좋습니다.

각 항목의 목록 세부 정보는 각 항목에 UITableView대한 자세한 정보를 보여주기 때문에 사람들이 사용 합니다.

Apple 문서 :

UICollectionView 클래스 참조

UICollectionView 클래스는 정렬 된 데이터 항목 모음을 관리하고 사용자 지정 가능한 레이아웃을 사용하여 표시합니다. 컬렉션보기는 단일 열 레이아웃 이상을 지원할 수 있다는 점을 제외하면 테이블보기와 동일한 일반 기능을 제공합니다. 컬렉션보기는 다중 열 그리드, 바둑판 식 레이아웃, 원형 레이아웃 등을 구현하는 데 사용할 수있는 사용자 지정 가능한 레이아웃을 지원합니다. 원하는 경우 컬렉션보기의 레이아웃을 동적으로 변경할 수도 있습니다.

UITableView 클래스 참조

테이블보기는 단일 열에 항목 목록을 표시합니다. UITableView는 UITableView가 세로 스크롤 만 허용하지만 사용자가 테이블을 스크롤 할 수있는 UIScrollView의 하위 클래스입니다. 테이블의 개별 항목을 구성하는 셀은 UITableViewCell 개체입니다. UITableView는 이러한 개체를 사용하여 테이블의 보이는 행을 그립니다. 셀에는 콘텐츠 (제목 및 이미지)가 있으며 오른쪽 가장자리 근처에 액세서리보기가있을 수 있습니다. 표준 액세서리보기는 공개 표시기 또는 세부 공개 버튼입니다. 전자는 데이터 계층 구조의 다음 수준으로 이어지고 후자는 선택한 항목의 세부보기로 이어집니다. 액세서리보기는 스위치 및 슬라이더와 같은 프레임 워크 컨트롤이거나 사용자 지정보기 일 수도 있습니다. 테이블보기는 사용자가 테이블 행을 삽입, 삭제 및 재정렬 할 수있는 편집 모드로 들어갈 수 있습니다.


3
확장 성 측면에서 생각합니다-컬렉션 뷰 점수가 더 높습니다 !!
— thatzprem

collectionview가 추가적인 복잡성없이 모든 요구를 충족시킬 수 있지만 유연성을 제공 할 때 왜 tableview를 사용해야하는지 궁금합니다 (고객이 레이아웃을 둘 이상의 열로 확장해야하는 경우 collectionview를 사용하는 것이 매우 간단합니다 ). 나는 항상 기본적으로 tableviews를 사용했지만 이제는 대신 collectionviews로 전환하는 것이 합리적 일지 의문입니다. 내가 뭔가를 놓치고 있습니까?
— 비르 우리

모두 주요 요구 사항을 기반으로합니다. 컬렉션 뷰는 늦게까지 모든 개발자가 테이블을 사용하여 그리드와 그런 종류의 물건을 만듭니다. 그러나 이제는 days collectionview가 tableview와 같은 레이아웃을 만드는 데 가장 많이 사용됩니다. 내가 사용 collectionviews에 그것의 좋은 생각 같아요뿐만 아니라 있도록
— 니틴 Gohel

설명해 주셔서 감사합니다.
— ssowri1

45

내 기준은 다음과 같습니다.

  • UITableView가 할 수 있다면 그것을 사용하십시오

  • UITableView에 많은 코드가 필요하거나 전혀 할 수없는 경우 UICollectionView를 사용하십시오.

결정을 내리기 전에 UITableView에 대한 제한을 고려해야합니다. 단일 열입니다. 셀만 사용자 지정할 수 있지만 섹션 배경 등은 사용자 지정할 수 없습니다. 따라서 추가 요령이없는 간단한 목록이있는 경우 기본적으로 늪지 표준 iOS보기처럼 보이는 경우 UITableview를 사용합니다. 사용자 정의 삽입 또는 각 섹션 주위에 테두리가있는 경우 UICollectionView를 사용하십시오.

저는 실제로 모든 것에 대해 UICollectionView를 고려하고 있습니다. 뷰를 테이블 뷰로 개발하기 시작할 때 매우 비싸기 때문에 나중에 필요한 작업을 수행 할 수 없다는 것을 알게됩니다. 첫 손 경험;)

두 가지를 더 많이 경험 한 후에 편집하십시오. 마지막 단락은 무시하십시오. UICollectionView가 UITableView처럼 작동하도록하려면 많은 상용구 코드가 필요합니다. 정말 필요한 경우에만 UICollectionView를 사용하십시오. ;)


3
내가 찾고 있던 완벽한 대답! 더 많이 투표해야합니다!
— RAK APPDEV

2
개인적인 경험과 추천을 공개하는 것은 매우 도움이됩니다!
— aero

1
나는 이것을 읽고 확실히 웃었다. UITableView는 큐잉을 오프셋하는 애니메이션을 추가하는 경우 충돌이 발생한다는 점을 제외하고는 모든 사용자 정의가 가능합니다. 나는 애니메이션 가이드와 함께가는 당신의 대답을 추천하고, 당신이 그들을 새로 고칠 수 있도록 얼마나 많은 내부 뷰가 존재하는지 개인적으로 알아 내기 위해 파헤 치기를 권할 것입니다. 그리고 당신이 결국 발견하게 될 "나는 구분선을 보이지 않게 만들 수 없습니다"문제는 놀라지 않을 것입니다 누군가. scrollView, UIButton 및 tableView의 숨겨진 뷰는 사물에 숨겨져 있음을 알 때까지 대부분의 사용자 정의를
— Stephen J

33

간단한 목록 및 앞으로 / 뒤로 탐색을 위해 UITableView.

높은 수준의 사용자 정의 기능이 필요한 경우 UICollectionView.

일반적으로 소프트웨어 개발에서는 "가장 간단한 것"을 나타내는 접근 방식을 선택하는 것이 가장 좋습니다.

편집 : iOS 14부터 UICollectionView이제 목록도 할 수 있으며 이제 권장되는 접근 방식입니다. 자세한 정보 및 구현 세부 사항은 WWDC20의이 세션을 참조하십시오. https://developer.apple.com/videos/play/wwdc2020/10026/


14

내 관점에 따르면 collectionView와 tableView의 주요 차이점은

TABLEVIEW-> 하나의 열에 만 항목 목록을 표시합니다.

COLLECTION-VIEW-> 여러 열에 항목 목록을 표시합니다.

도움이되기를 바랍니다.


11

iPhone 용 UITableView를 선택하는 경우 먼저 iPad 전략을 고려했는지 확인하십시오. iPad 전용 레이아웃을 원하는 경우 단일 열 레이아웃을 격자로 만들 수 있습니다.


8

필수는 아니지만 항상 collectionview를 사용합니다. 이렇게하면 서로 다른 해상도에 대해 내 컬렉션이 표시되는 방식을 쉽게 조정할 수 있습니다. 장점은 향후 리팩토링 할 때 새로운 유형의 셀을 빠르게 추가 할 준비가되어 있다는 것입니다.

나는 tableviews의 요점을 보지 않습니다. 컬렉션 뷰를 사용하여 테이블을 나타내는 것은 매우 간단합니다. IMO.


4

데이터를 표시하는 방법에 전적으로 의존합니다. 위에서 언급했듯이 단일 데이터 세트 만 필요하고 너무 복잡하지 않은 경우 UITableViewelse를 사용하십시오 UICollectionView.

UICollectionView 사용자 정의 친화적입니다.

여러 셀 높이를 처리하는 경우 UICollectionView.


4

내 개인적인 경험에서 두 요소는 느슨하게 비교되어야합니다.

TableView

TableView는 데이터를 목록 형식으로 표시하도록 설계된 UI 요소입니다. 다음과 같이 UITableView와 함께 표준으로 제공되는 특정 기능이 있습니다.

  • 액세서리보기
  • 셀 선택 스타일
  • 스타일 편집 (삭제 및 편집 버튼).

위의 요소는 목록 형식으로 표시하고 상호 작용할 때 데이터의 유용성을 향상시킵니다. 이메일보기 등.

CollectionView

CollectionView는 사용자 지정 레이아웃 (일반적으로 목록이 아닌 모든 항목)을 사용하여 콘텐츠를 표시하도록 설계된 UI 요소입니다. CollectionViews는 완전히 맞춤화 된 레이아웃 스타일로 데이터를 표시하는 기능을 개선하고 동시에 레이아웃을 동적으로 변경합니다. 몇 가지 예는 다음과 같습니다.

  • 수평 목록
  • 포토 갤러리
  • 썸네일보기
  • 캐 러셀
  • 다이얼
  • 지도에 요소 배치
  • 기타

CollectionViews는 또한 다중 선택을 허용합니다.

결론

위에서 볼 수 있듯이 두 가지 모두 완전히 다른 사용 사례를 가지고 있으며 고유 한 특정 데이터 세트의 개발 및 사용성을 향상시키기 위해 설계되었습니다.

후속 상호 작용을 사용하여 목록 스타일로 무엇이든 표시하려는 경우 :-추가-삭제-순서 변경 UITableView는 즉시 지원을 제공하여이 프로세스를 단순화합니다.

그 밖의 모든 것은 유연성이 더 높기 때문에 CollectionView의 이점을 활용해야합니다.


2

둘 다 요구 사항에 따라 다릅니다. 테이블 뷰는 다양한 편집 시나리오를 지원합니다. 이 지원은 Collection View 클래스에서 구현되지 않았습니다. 이러한 방법에 의존하는 테이블보기에서 변환하는 경우 컬렉션보기에서 약간의 무거운 작업을 수행 할 수 있습니다. 컬렉션 뷰 섹션 헤더는 뷰 내의 어느 곳에 나 배치 할 수 있습니다. UITableView는 선택된 항목 값을 가져 와서 태그 또는 기타 항목으로 버튼을 설정할 필요가 없습니다.


1

실제로 모든 사람은 UITableView 만 필요할 때 내가 본 UICollectionView를 사용합니다. "일차원 적입니다. 위아래로 이동합니다. 레이아웃 및 데이터에 대해 불필요한 델리게이트 메서드를 추가하는 이유는 무엇입니까?" 나는 애니메이션 매뉴얼, HIG, UICollectionView 가이드를 읽지 않은 소유자가 그것을 사용하고 가변 높이와 애님을 추가하기로 결정했기 때문에 스타트 업이 UICollectionViewCell이 왜 찌그러 졌는지 알아내는 데 2 ​​시간을 추가로 보냈다. 말할 필요도없이, 그는 추가 레이아웃 델리게이트 + Nib이 없기 때문에 단순히 테이블 셀을 사용하여 피할 수 있었던 업무상 중요하지 않은 문제에 대해 두통과 많은 시간을 허비했습니다.

데이터와 디스플레이가 필요할 때 UICollectionView의 모든 것입니다. 그들은 매우 강력합니다. 그러나 실제로 내가 본 대부분의 사람들은 목록에서 사용하고 있습니다.

이것은 또 다른 결함을 가져옵니다. 또한 변경되지 않는 짧고 일정한 목록에도 사용됩니다. 이 경우 Xib를 만드십시오. 또는이를 쌓는 사용자 정의보기를 작성하십시오. 왜? 버튼이나 스위치가있는 5 세트의 레이블에 대한 메모리 관리가 필요하지 않기 때문입니다. 변경 될 수 있다면 예, 목록을 사용하십시오. 물리학을 원한다면 UICollectionView가 멋진 효과로 잘 작동합니다. 하지만 절대 움직이지 않는 5 개의 레이블에 대해 5 개의 델리게이트 메서드와 레이아웃 시스템을 추가해야합니까?

또한 iOS에도 기본 스태킹 뷰가 있다는 것을 잊지 않습니다. 2D 및 애니메이션 시스템에 능숙하더라도 원하는 방식으로 변형 할 수 없으므로 내장 된 시스템을 사용하지 않습니다.

내가 말하는 것은 요구 사항을 정의하는 것입니다. UI가 항목을 추가 / 제거하지 않고 자체적으로 새로 고치지 않는 경우 둘 중 하나가 필요하지 않을 수 있습니다. 또는 카드 게임을 작성하여 가상으로 테이블에 버리고 레이아웃 가이드를 위해 물리 시스템과 함께 UICollectionView를 사용하고 싶을 수도 있습니다.


0

우리의 필요에 따라 TableView 또는 CollectionView를 선택합니다.

예:

전화 연락처의 경우 tableView가 가장 좋은 옵션입니다.

사진 갤러리의 경우 컬렉션보기가 가장 좋은 옵션입니다.


7
이 방식이 의견에 가깝다는 데 동의하지만 답변이 아닌 댓글이어야한다고 생각합니다.
— Popeye

0

현재 프로젝트에서이 문제가 발생했습니다. 사용할 것. 제 경우에는 정말 간단했습니다. 둘 다 필요했습니다. UITableView처럼 보이고 변경 / 레이아웃을 변경하기 위해 뷰가 필요했습니다. 그래서 UICollectionView가 사용되었습니다. 또한 추가 사용자 지정이 필요하지 않은 모든 곳에서 UITableView를 사용합니다. UiTableView는 이미지와 텍스트를 포함하는 기본 레이아웃과 함께 제공되므로 간단하게 사용합니다.


0

요구 사항에 따라 UITableView 또는 UICollection보기를 선택합니다.

이미지 또는 항목을 그리드 유형으로 표시하거나 더 많은 사용자 정의 기능이 필요한 경우 UICollectionview를 사용합니다.

세부 사항 및 하위 세부 사항과 함께 각 항목을 나열하기 위해 UITableView를 사용합니다.

UICollectionView : UICollectionView 클래스는 정렬 된 데이터 항목 컬렉션을 관리하고 사용자 지정 가능한 레이아웃을 사용하여 표시합니다. 컬렉션보기는 단일 열 레이아웃 이상을 지원할 수 있다는 점을 제외하면 테이블보기와 동일한 일반 기능을 제공합니다.

UITableView : 테이블보기는 단일 열에 항목 목록을 표시합니다. UITableView는 UITableView가 세로 스크롤 만 허용하지만 사용자가 테이블을 스크롤 할 수있는 UIScrollView의 하위 클래스입니다.


0

그리드 뷰 디스플레이에 대한 내 뷰에 따라 UI 컬렉션 뷰를 사용하고 다른 모든 목록 뷰는 UITable 뷰를 사용합니다.


0

개인적으로 UICollectionView가 UITableview가 할 수있는 대부분의 작업을 수행 할 수 있다고 생각합니다. 음, 동시에 사용하기가 더 복잡합니다.

관리자가 향후 요구 사항을 변경할 경우를 대비하여 UICollectionView를 TableView로 사용하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.