여러개의 ListView(UITableView, UICollectionView)를 사용해야할 경우 구현방법에 대해 궁금합니다.

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • 인담
      참가자
      • 글작성 : 9
      • 답글작성 : 9

      안녕하세요.

       

      오늘의 질문은 한화면에 여러개 리스트뷰를 구현하는 방법입니다.

      우선 제가 구현하기 원하는 화면은 다음과 같습니다.

      ui

      1. 위에 상단 2개는 수평으로 스크롤 이동이 가능해야 합니다(horizontal collectionview로 구현 예정)
      2. 그리고 그 아래부터는 수직으로 스크롤 이동이 가능해야 합니다.(tableview로 구현 예정)

      이렇게 구현을 해야할 때 어떤 방식이 최적의 구현방식일까요?

       

      우선, 제가 생각한 방법은 다음과 같습니다.

      1. viewController에 tableview를 추가하고
      2. tableview의 1번째와 2번째 tableviewcell에 horizontal layout을 가진 collectionview를 각각 추가한다.

       

      이렇게 구현하는게 가장 베스트일까요?

      궁금합니다.

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      먼저 생각한 방법을 보니 뷰 전체가 상하 스크롤이 가능해야 하는 상황인 것 같네요!

      우선 테이블뷰(혹은 콜렉션뷰)와 스택뷰 두 개를 언제 사용할 것이냐 판단은, 아이템의 수가 굉장히 유동적이고 그 수가 많다(수십개 이상)면 테이블뷰(콜렉션뷰)를 사용하는 것이 더 낫겠고, 아이템의 수가 적고 변동이 많지 않으면 스택뷰를 사용하는 것이 좋을수도 있습니다.

      테이블뷰(혹은 콜렉션뷰)와 스택뷰 중에 무엇을 사용할지 먼저 선택하고요, 둘 다 스택뷰를 사용하기 부적합하다는 전제로 설명을 하자면, 상하 스크롤을 위해선 테이블뷰와 콜렉션뷰 모두 사용가능합니다. 가로 스크롤뷰는 콜렉션뷰만 가능하겠죠.
      만약 상하스크롤을 위해 테이블뷰를 사용한다면 저는 테이블뷰 헤더(테이블뷰 섹션 헤더 말고)로 콜렉션뷰를 넣을 것 같아요. 혹은 테이블뷰의 첫 번째 셀 내부에 콜렉션뷰를 넣을 수도 있지만, 테이블뷰 헤더를 두고 그러는 것은 좀 더 귀찮은 일일것 같아요.

      • 인담
        참가자
        • 글작성 : 9
        • 답글작성 : 9

        아 헤더에 구현하면 사용하면 되겠네요.

        감사합니다!

    • SOGIH
      참가자
      • 글작성 : 0
      • 답글작성 : 1

      테이블 뷰 셀에 아예 성격이 다른 셀(원래 테이블뷰에 나타내고자 하는list, collectionView)을 구현하는것은 적절하지 않은것 같습니다.

      가장 좋은 방법일지는 모르겠지만. 저의 아이디어는

      기본적으로 전체 스크롤이 상하로 이루어져야하므로 

      1. 화면전체에 테이블 뷰를 추가합니다.

      컬렉션 뷰는 상단에서만 보여주면 되므로

      1. 테이블 뷰 헤더에 컬렉션뷰를 지정합니다.

      간단하게 직접 구현을 해보았는데요

      https://github.com/statios/library/tree/master/CustomUI-example

      여기에서 소스코드를 확인하세요.

      도움이 되었길 바랍니다!

      • 야곰
        키 마스터
        • 글작성 : 37
        • 답글작성 : 580

        크으 직접 코드까지…! 멋져요!

      • 인담
        참가자
        • 글작성 : 9
        • 답글작성 : 9

        코드까지..ㅠㅠ 정말 감사합니다.

        코드를 보면서 많은 도움이 됬습니다.

        한가지만 더 질문을 드리자면 tableview로 구현할 경우 링크에 주신 tableview.tableHeaderView 에 뷰를 넣을 수 있었는데 만약 collectionview로 해당 기능을 구현하려면 UICollectionReusableView을 만들고 delegate에 구현하면 될까요?

        • 야곰
          키 마스터
          • 글작성 : 37
          • 답글작성 : 580

          이 링크를 참고해보면 도움이 될 것 같습니다

          • 인담
            참가자
            • 글작성 : 9
            • 답글작성 : 9

             넵 감사합니다!

2 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom