[swift] IGListKit에서 컬렉션 뷰와 테이블 뷰 간 전환하는 방법

IGListKit은 iOS 애플리케이션에서 유연하고 효율적인 컬렉션 뷰와 테이블 뷰를 구성하기 위한 강력한 도구입니다. IGListKit을 사용하면 컬렉션 뷰와 테이블 뷰 간의 전환도 간단하게 처리할 수 있습니다. 이번 포스트에서는 IGListKit을 사용하여 컬렉션 뷰와 테이블 뷰를 전환하는 방법에 대해 알아보겠습니다.

IGListKit 설치

먼저, IGListKit을 프로젝트에 설치해야 합니다. IGListKit은 CocoaPods를 통해 설치할 수 있습니다. Podfile 파일에 다음과 같은 내용을 추가합니다:

pod 'IGListKit'

그리고 터미널에서 아래 명령어를 실행하여 Podfile을 기반으로 IGListKit을 설치합니다:

pod install

설치가 완료되면, ‘.xcworkspace’ 파일을 열어서 IGListKit 프로젝트를 사용할 수 있습니다.

컬렉션 뷰와 테이블 뷰 생성

IGListKit을 사용하여 컬렉션 뷰와 테이블 뷰를 생성합니다. 먼저, 컬렉션 뷰를 만들어 보겠습니다. IGListAdapter 클래스를 사용하여 컬렉션 뷰와 데이터 소스를 연결합니다. 다음은 간단한 예시 코드입니다:

import IGListKit

class CollectionViewController: UIViewController {
    let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
    lazy var adapter = IGListAdapter(updater: IGListAdapterUpdater(), viewController: self, workingRangeSize: 0)
    var data: [Any] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        collectionView.backgroundColor = .white
        view.addSubview(collectionView)
        
        adapter.collectionView = collectionView
        adapter.dataSource = self
    }
}

extension CollectionViewController: ListAdapterDataSource {
    func objects(for listAdapter: ListAdapter) -> [ListDiffable] {
        return data as! [ListDiffable]
    }
    
    func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -> ListSectionController {
        // 섹션 컨트롤러 생성 및 반환
    }
    
    func emptyView(for listAdapter: ListAdapter) -> UIView? {
        return nil
    }
}

이제 컬렉션 뷰를 만드는 방법을 알았습니다. IGListKit은 데이터 소스와 섹션 컨트롤러를 통해 컬렉션 뷰를 완전히 제어할 수 있습니다.

테이블 뷰도 비슷한 방식으로 생성할 수 있습니다. 위와 유사한 코드로 테이블 뷰를 만들고 필요한 데이터 소스와 섹션 컨트롤러를 구현하세요.

컬렉션 뷰와 테이블 뷰 전환

이제 IGListKit을 사용하여 컬렉션 뷰와 테이블 뷰를 전환하는 방법을 살펴보겠습니다. 전환을 위해서는 IGListAdapterUpdater 클래스의 performUpdates(animated:completion:) 메서드를 사용해야 합니다. 이 메서드를 호출하면 IGListKit은 변경된 데이터를 기반으로 컬렉션 뷰나 테이블 뷰를 업데이트합니다.

예를 들어, 사용자가 버튼을 눌렀을 때 컬렉션 뷰와 테이블 뷰를 전환하고자 한다면, 다음과 같은 코드를 사용할 수 있습니다:

@IBAction func switchButtonTapped(_ sender: UIButton) {
    if collectionView.superview != nil {
        adapter.collectionView = nil
        tableView.reloadData()
        view.addSubview(tableView)
        tableView.frame = collectionView.frame
    } else {
        adapter.collectionView = collectionView
        collectionView.reloadData()
        tableView.removeFromSuperview()
    }
}

그리고 viewDidLoad 메서드에서 컬렉션 뷰를 기본으로 설정합니다:

override func viewDidLoad() {
    super.viewDidLoad()
    
    collectionView.backgroundColor = .white
    view.addSubview(collectionView)
    
    adapter.collectionView = collectionView
    adapter.dataSource = self
}

위 코드에서는 collectionView.superview를 체크하여 현재 컬렉션 뷰가 화면에 표시되었는지 확인한 후, 해당하는 UI 변경 작업을 수행합니다.

결론

IGListKit을 사용하면 컬렉션 뷰와 테이블 뷰를 간단하게 생성하고 전환할 수 있습니다. IGListKit의 강력한 기능을 활용하여 iOS 애플리케이션에서 유연한 인터페이스를 구성할 수 있습니다.

더 많은 정보를 알아보려면 IGListKit의 공식 문서를 참조하시기 바랍니다: IGListKit GitHub 페이지