UICollectionView(3)
-
[UICollectionView] Drag & Drop cell 위치 변경, Delegate로 구현하기
1️⃣ 이번 글에서 구현하고자 하는 기능은?이번 글에서 구현할 기능은 예전에도 한번 구현해 본 경험이 있던 컬렉션 뷰에서 특정 Cell을 꾹 눌러 드래그할 때, Cell의 순서를 바꿀 수 있는 Drag & Drop 기능이다.사실 이 내용은 예전에도 한번 구현해본적이 있다.당시에는 테이블 뷰의 "편집 모드"에 한정되는 기능 지원으로 인해 UILongPressGestureRecognizer부터 시작해 Snapshot을 찍고, 상태를 저장하고 머시기.... 어렵게 구현했었다.하지만, 2년이 지난 지금.그때는 없던 UICollectionViewDragDelegate, UICollectionViewDropDelegate라는 좋은 방식을 찾을 수 있었고, Apple 공식문서에서도 Supporting Drag and..
2024.02.01 -
[UITableViewDiffableDataSource] Diffable Datasource, 데이터가 달라졌을 때 View에 효율적으로 반영하는 방법
0️⃣ Diffable Datasource? DataSource?UITableView와 UICollectionView를 사용할 때, 공통적으로 사용하는 두 객체가 있다.그것은 바로 Delegate와 DataSource.잠깐 Delegate와 Datasource의 개념을 복습하고 지나가보자면,MVC(Model-View-Controller) 프로그래밍 디자인 패턴에서 이 객체들을 바라봤을 때,뷰를 그리기 위해 필요한 데이터를 제공하는 모델(M)의 역할은 DataSource가, 화면을 처리하는 뷰(V)의 역할은 테이블뷰 인스턴스가, 뷰의 모양과 동작을 관리하는 컨트롤러(C)의 역할은 Delegate가 담당한 셈이라고 이해하면 된다.오늘 이 글에서는 데이터를 제공하는 DataSource 중에서도 (제공되는 데이..
2023.11.04 -
[UITableView] 아무 데이터가 없을 때 나오는 화면,엠티뷰(empty view) 만들기
iOS 개발을 하면, 가장 자주 만들어야 할 화면이 바로 테이블 뷰와 컬렉션 뷰일 거다. 테이블 뷰(TableView)와 컬렉션 뷰(CollectionView)는 모두 같은 형태의 데이터를 표출할 때 큰 틀만 만들어두고, 그 안에 들어가는 데이터의 세부 내용만 바꿔주는 식으로 사용한다는 점에서 두 뷰가 공통점을 가졌다. 즉, 다시 말하자면, 이 두 화면은 모두 1개 이상의 데이터가 존재할 때 그 데이터들을 반복해서 보여주기 위한 화면이라는 거다. 그렇다면, 만약에 데이터가 한 개도 없을 때는 어떤 화면이 나오게 될까? 당연히 아무런 데이터가 없기 때문에, 아래 왼쪽 사진처럼 빈 화면이 나오게 된다. 이렇게 빈 화면을 사용자에게 보여줄 수 있지만, 보통은 이 화면을 그대로 노출시키지는 않는다. 이 상황에,..
2022.01.16