답변:
그것은 요구 사항에 따라 다릅니다. 애플리케이션 흐름에 따라 애플리케이션에 통합 할 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 클래스는 정렬 된 데이터 항목 모음을 관리하고 사용자 지정 가능한 레이아웃을 사용하여 표시합니다. 컬렉션보기는 단일 열 레이아웃 이상을 지원할 수 있다는 점을 제외하면 테이블보기와 동일한 일반 기능을 제공합니다. 컬렉션보기는 다중 열 그리드, 바둑판 식 레이아웃, 원형 레이아웃 등을 구현하는 데 사용할 수있는 사용자 지정 가능한 레이아웃을 지원합니다. 원하는 경우 컬렉션보기의 레이아웃을 동적으로 변경할 수도 있습니다.
테이블보기는 단일 열에 항목 목록을 표시합니다. UITableView는 UITableView가 세로 스크롤 만 허용하지만 사용자가 테이블을 스크롤 할 수있는 UIScrollView의 하위 클래스입니다. 테이블의 개별 항목을 구성하는 셀은 UITableViewCell 개체입니다. UITableView는 이러한 개체를 사용하여 테이블의 보이는 행을 그립니다. 셀에는 콘텐츠 (제목 및 이미지)가 있으며 오른쪽 가장자리 근처에 액세서리보기가있을 수 있습니다. 표준 액세서리보기는 공개 표시기 또는 세부 공개 버튼입니다. 전자는 데이터 계층 구조의 다음 수준으로 이어지고 후자는 선택한 항목의 세부보기로 이어집니다. 액세서리보기는 스위치 및 슬라이더와 같은 프레임 워크 컨트롤이거나 사용자 지정보기 일 수도 있습니다. 테이블보기는 사용자가 테이블 행을 삽입, 삭제 및 재정렬 할 수있는 편집 모드로 들어갈 수 있습니다.
내 기준은 다음과 같습니다.
UITableView가 할 수 있다면 그것을 사용하십시오
UITableView에 많은 코드가 필요하거나 전혀 할 수없는 경우 UICollectionView를 사용하십시오.
결정을 내리기 전에 UITableView에 대한 제한을 고려해야합니다. 단일 열입니다. 셀만 사용자 지정할 수 있지만 섹션 배경 등은 사용자 지정할 수 없습니다. 따라서 추가 요령이없는 간단한 목록이있는 경우 기본적으로 늪지 표준 iOS보기처럼 보이는 경우 UITableview를 사용합니다. 사용자 정의 삽입 또는 각 섹션 주위에 테두리가있는 경우 UICollectionView를 사용하십시오.
저는 실제로 모든 것에 대해 UICollectionView를 고려하고 있습니다. 뷰를 테이블 뷰로 개발하기 시작할 때 매우 비싸기 때문에 나중에 필요한 작업을 수행 할 수 없다는 것을 알게됩니다. 첫 손 경험;)
두 가지를 더 많이 경험 한 후에 편집하십시오. 마지막 단락은 무시하십시오. UICollectionView가 UITableView처럼 작동하도록하려면 많은 상용구 코드가 필요합니다. 정말 필요한 경우에만 UICollectionView를 사용하십시오. ;)
간단한 목록 및 앞으로 / 뒤로 탐색을 위해 UITableView
.
높은 수준의 사용자 정의 기능이 필요한 경우 UICollectionView
.
일반적으로 소프트웨어 개발에서는 "가장 간단한 것"을 나타내는 접근 방식을 선택하는 것이 가장 좋습니다.
편집 : iOS 14부터 UICollectionView
이제 목록도 할 수 있으며 이제 권장되는 접근 방식입니다. 자세한 정보 및 구현 세부 사항은 WWDC20의이 세션을 참조하십시오. https://developer.apple.com/videos/play/wwdc2020/10026/
내 관점에 따르면 collectionView와 tableView의 주요 차이점은
TABLEVIEW-> 하나의 열에 만 항목 목록을 표시합니다.
COLLECTION-VIEW-> 여러 열에 항목 목록을 표시합니다.
도움이되기를 바랍니다.
iPhone 용 UITableView를 선택하는 경우 먼저 iPad 전략을 고려했는지 확인하십시오. iPad 전용 레이아웃을 원하는 경우 단일 열 레이아웃을 격자로 만들 수 있습니다.
필수는 아니지만 항상 collectionview를 사용합니다. 이렇게하면 서로 다른 해상도에 대해 내 컬렉션이 표시되는 방식을 쉽게 조정할 수 있습니다. 장점은 향후 리팩토링 할 때 새로운 유형의 셀을 빠르게 추가 할 준비가되어 있다는 것입니다.
나는 tableviews의 요점을 보지 않습니다. 컬렉션 뷰를 사용하여 테이블을 나타내는 것은 매우 간단합니다. IMO.
내 개인적인 경험에서 두 요소는 느슨하게 비교되어야합니다.
TableView
TableView는 데이터를 목록 형식으로 표시하도록 설계된 UI 요소입니다. 다음과 같이 UITableView와 함께 표준으로 제공되는 특정 기능이 있습니다.
위의 요소는 목록 형식으로 표시하고 상호 작용할 때 데이터의 유용성을 향상시킵니다. 이메일보기 등.
CollectionView
CollectionView는 사용자 지정 레이아웃 (일반적으로 목록이 아닌 모든 항목)을 사용하여 콘텐츠를 표시하도록 설계된 UI 요소입니다. CollectionViews는 완전히 맞춤화 된 레이아웃 스타일로 데이터를 표시하는 기능을 개선하고 동시에 레이아웃을 동적으로 변경합니다. 몇 가지 예는 다음과 같습니다.
CollectionViews는 또한 다중 선택을 허용합니다.
결론
위에서 볼 수 있듯이 두 가지 모두 완전히 다른 사용 사례를 가지고 있으며 고유 한 특정 데이터 세트의 개발 및 사용성을 향상시키기 위해 설계되었습니다.
후속 상호 작용을 사용하여 목록 스타일로 무엇이든 표시하려는 경우 :-추가-삭제-순서 변경 UITableView는 즉시 지원을 제공하여이 프로세스를 단순화합니다.
그 밖의 모든 것은 유연성이 더 높기 때문에 CollectionView의 이점을 활용해야합니다.
둘 다 요구 사항에 따라 다릅니다. 테이블 뷰는 다양한 편집 시나리오를 지원합니다. 이 지원은 Collection View 클래스에서 구현되지 않았습니다. 이러한 방법에 의존하는 테이블보기에서 변환하는 경우 컬렉션보기에서 약간의 무거운 작업을 수행 할 수 있습니다. 컬렉션 뷰 섹션 헤더는 뷰 내의 어느 곳에 나 배치 할 수 있습니다. UITableView는 선택된 항목 값을 가져 와서 태그 또는 기타 항목으로 버튼을 설정할 필요가 없습니다.
실제로 모든 사람은 UITableView 만 필요할 때 내가 본 UICollectionView를 사용합니다. "일차원 적입니다. 위아래로 이동합니다. 레이아웃 및 데이터에 대해 불필요한 델리게이트 메서드를 추가하는 이유는 무엇입니까?" 나는 애니메이션 매뉴얼, HIG, UICollectionView 가이드를 읽지 않은 소유자가 그것을 사용하고 가변 높이와 애님을 추가하기로 결정했기 때문에 스타트 업이 UICollectionViewCell이 왜 찌그러 졌는지 알아내는 데 2 시간을 추가로 보냈다. 말할 필요도없이, 그는 추가 레이아웃 델리게이트 + Nib이 없기 때문에 단순히 테이블 셀을 사용하여 피할 수 있었던 업무상 중요하지 않은 문제에 대해 두통과 많은 시간을 허비했습니다.
데이터와 디스플레이가 필요할 때 UICollectionView의 모든 것입니다. 그들은 매우 강력합니다. 그러나 실제로 내가 본 대부분의 사람들은 목록에서 사용하고 있습니다.
이것은 또 다른 결함을 가져옵니다. 또한 변경되지 않는 짧고 일정한 목록에도 사용됩니다. 이 경우 Xib를 만드십시오. 또는이를 쌓는 사용자 정의보기를 작성하십시오. 왜? 버튼이나 스위치가있는 5 세트의 레이블에 대한 메모리 관리가 필요하지 않기 때문입니다. 변경 될 수 있다면 예, 목록을 사용하십시오. 물리학을 원한다면 UICollectionView가 멋진 효과로 잘 작동합니다. 하지만 절대 움직이지 않는 5 개의 레이블에 대해 5 개의 델리게이트 메서드와 레이아웃 시스템을 추가해야합니까?
또한 iOS에도 기본 스태킹 뷰가 있다는 것을 잊지 않습니다. 2D 및 애니메이션 시스템에 능숙하더라도 원하는 방식으로 변형 할 수 없으므로 내장 된 시스템을 사용하지 않습니다.
내가 말하는 것은 요구 사항을 정의하는 것입니다. UI가 항목을 추가 / 제거하지 않고 자체적으로 새로 고치지 않는 경우 둘 중 하나가 필요하지 않을 수 있습니다. 또는 카드 게임을 작성하여 가상으로 테이블에 버리고 레이아웃 가이드를 위해 물리 시스템과 함께 UICollectionView를 사용하고 싶을 수도 있습니다.
현재 프로젝트에서이 문제가 발생했습니다. 사용할 것. 제 경우에는 정말 간단했습니다. 둘 다 필요했습니다. UITableView처럼 보이고 변경 / 레이아웃을 변경하기 위해 뷰가 필요했습니다. 그래서 UICollectionView가 사용되었습니다. 또한 추가 사용자 지정이 필요하지 않은 모든 곳에서 UITableView를 사용합니다. UiTableView는 이미지와 텍스트를 포함하는 기본 레이아웃과 함께 제공되므로 간단하게 사용합니다.
요구 사항에 따라 UITableView 또는 UICollection보기를 선택합니다.
이미지 또는 항목을 그리드 유형으로 표시하거나 더 많은 사용자 정의 기능이 필요한 경우 UICollectionview를 사용합니다.
세부 사항 및 하위 세부 사항과 함께 각 항목을 나열하기 위해 UITableView를 사용합니다.
UICollectionView : UICollectionView 클래스는 정렬 된 데이터 항목 컬렉션을 관리하고 사용자 지정 가능한 레이아웃을 사용하여 표시합니다. 컬렉션보기는 단일 열 레이아웃 이상을 지원할 수 있다는 점을 제외하면 테이블보기와 동일한 일반 기능을 제공합니다.
UITableView : 테이블보기는 단일 열에 항목 목록을 표시합니다. UITableView는 UITableView가 세로 스크롤 만 허용하지만 사용자가 테이블을 스크롤 할 수있는 UIScrollView의 하위 클래스입니다.