UITableViewDiffableDataSource

Panther·2021년 8월 25일
0
post-custom-banner

https://developer.apple.com/documentation/uikit/uitableviewdiffabledatasource

"The object you use to manage data and provide cells for a table view."

테이블 뷰에서 데이터를 관리하고 셀을 제공하기 위해 사용하는 객체입니다.

Declaration

@MainActor class UITableViewDiffableDataSource<SectionIdentifierType, ItemIdentifierType> : NSObject where SectionIdentifierType : Hashable, ItemIdentifierType : Hashable

Overview

디퍼블 데이터 소스 객체는 테이블 뷰 객체와 함께 하는 데이터 소스의 특수한 타입입니다. 이 객체는 테이블 뷰의 데이터와 UI에 대한 업데이트를 관리하는 데 필요한 동작을 간단하고 효율적인 방법으로 제공합니다. 이 객체는 UICollectionViewDataSource 프로토콜을 따르기도 하며, 프로토콜의 모든 메소드에 대한 구현도 제공합니다.

테이블 뷰에 데이터를 채우려면 아래처럼 해야 합니다.

  1. 디퍼블 데이터 소스와 테이블 뷰를 연결합니다.
  2. 테이블 뷰의 셀을 설정하기 위해 셀 제공자를 구현합니다.
  3. 데이터의 현재 상태를 생성합니다.
  4. UI에서 데이터를 표시합니다.

디퍼블 데이터 소스를 테이블 뷰에 연결하려면, 연결하길 원하는 테이블 뷰를 전달하면서 디퍼블 데이터 소스의 init(tableView:cellProvider:) 이니셜라이저를 사용해 디퍼블 데이터 소스를 생성해야 합니다. UI에서 데이터를 어떻게 표시할지 결정하기 위해 각각의 셀을 설정하는 곳으로 셀 제공자 역시 전달해야 합니다.

dataSource = UITableViewDiffableDataSource<Int, UUID>(tableView: tableView) {
    (tableView: UITableView, indexPath: IndexPath, itemIdentifier: UUID) -> UITableViewCell? in
    // configure and return cell
}

다음으로 데이터의 현재 상태를 생성할 수 있고, 스냅샷을 구성하고 적용하는 것을 통해 UI에 데이터를 표시할 수 있습니다. 이에 대한 더 많은 정보는 NSDiffableDataSourceSnapshot을 보시기 바랍니다.

NSDiffableDataSourceSnapshot
https://developer.apple.com/documentation/uikit/nsdiffabledatasourcesnapshot
https://velog.io/@panther222128/NSDiffableDataSourceSnapshot

Important
dataSource를 디퍼블 데이터 소스로 설정한 후 테이블 뷰에서 dataSource를 변경하지 않아야 합니다. 테이블 뷰에서 초기 데이터 소스 설정 후 새로운 데이터 소스가 필요한 경우 새로운 테이블 뷰와 디퍼블 데이터 소스를 생성 및 설정해야 합니다.

Topics


Supporting Bridging

UITableViewDiffableDataSourceReference

테이블 뷰에 대한 데이터 관리 및 아이템 제공을 위해 사용하는 Objective-C 객체의 스위프트 표현입니다.

https://developer.apple.com/documentation/uikit/uitableviewdiffabledatasourcereference
https://velog.io/@panther222128/UITableViewDiffableDataSourceReference


Supporting Protocol Requirements

Protocol Implementations

프로토콜 메소드의 디퍼블 데이터 소스 구현에 접근합니다.

https://developer.apple.com/documentation/uikit/uitableviewdiffabledatasource/protocol_implementations
https://velog.io/@panther222128/Protocol-Implementations


See Also


Data

Filling a Table with Data

데이터 소스 객체를 사용해서 동적으로 테이블을 위한 셀을 생성 및 설정합니다. 혹은 스토리보드로부터 정적으로 셀을 제공합니다.

https://developer.apple.com/documentation/uikit/views_and_controls/table_views/filling_a_table_with_data
https://velog.io/@panther222128/Filling-a-Table-with-Data

UILocalizedIndexedCollation

섹션 인덱스를 갖는 테이블 뷰에서 데이터를 조직화, 정렬, 로컬화하는 객체입니다.

https://developer.apple.com/documentation/uikit/uilocalizedindexedcollation
https://velog.io/@panther222128/UILocalizedIndexedCollation

UIRefreshControl

스크롤 뷰 컨텐츠의 리프레시를 시작할 수 있는 표준 컨트롤입니다.

https://developer.apple.com/documentation/uikit/uirefreshcontrol
https://velog.io/@panther222128/UIRefreshControl


post-custom-banner

0개의 댓글