[swift] Swift IGListKit을 사용한 컬렉션 뷰 셀 밀어내기 처리하기

이번 포스트에서는 IGListKit을 사용하여 Swift로 컬렉션 뷰 셀 밀어내기 처리하는 방법에 대해 알아보겠습니다.

IGListKit 소개

IGListKit은 Instagram에서 개발한 iOS용 컬렉션 뷰 프레임워크입니다. 이 프레임워크는 코드의 유연성과 재사용성을 크게 향상시키면서 컬렉션 뷰의 성능을 최적화하는 데 도움이 됩니다.

IGListKit 설치하기

IGListKit은 CocoaPods나 Swift Package Manager를 통해 설치할 수 있습니다. 프로젝트의 Podfile에 다음과 같이 IGListKit을 추가해주세요:

pod 'IGListKit'

설치가 완료되면 프로젝트를 빌드하고 IGListKit을 import해주세요:

import IGListKit

컬렉션 뷰와 IGListKit 연동하기

먼저, IGListKit에서 제공하는 IGListAdapter를 사용하여 컬렉션 뷰와 IGListKit을 연동해야 합니다. 아래의 예제 코드에서는 UIViewController에 있는 컬렉션 뷰와 IGListAdapter를 연동하는 방법을 보여줍니다:

class MyViewController: UIViewController, UICollectionViewDelegate {
    
    let collectionView: UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        // 컬렉션 뷰 레이아웃 설정하기
        let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
        // ...
        return collectionView
    }()
    
    lazy var adapter: IGListAdapter = {
        return IGListAdapter(updater: IGListAdapterUpdater(), viewController: self, workingRangeSize: 0)
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // IGListAdapter에 컬렉션 뷰와 데이터 소스(delegate)를 연결합니다.
        adapter.collectionView = collectionView
        adapter.dataSource = self
        
        // ...
    }
    
    // ...
}

위의 예제 코드에서는 IGListAdapter를 생성하여 컬렉션 뷰와 UIViewController를 연결하고, 데이터 소스(delegate)를 UIViewController에 구현해야 합니다.

셀 밀어내기 처리하기

이제 IGListKit을 사용하여 컬렉션 뷰 셀을 밀어내는 방법을 알아보겠습니다. IGListKit은 IGSwipeActionsDelegate 프로토콜을 제공하여 셀에서 밀어내기 작업을 처리할 수 있도록 도와줍니다.

먼저 UIViewController에 IGSwipeActionsDelegate 프로토콜을 구현합니다:

extension MyViewController: IGSwipeActionsDelegate {
    
    func swipeActions(for collectionView: UICollectionView, indexPath: IndexPath, direction: IGSwipeActionsDirection) -> [IGSwipeAction]? {
        // 밀어내기 작업을 처리할 액션을 반환합니다.
        return [deleteAction(), favoriteAction()]
    }
    
    func deleteAction() -> IGSwipeAction {
        // 삭제 액션을 생성하여 반환합니다.
        let deleteAction = IGSwipeAction(title: "Delete", image: UIImage(named: "delete"))

        deleteAction.backgroundColor = .red
        deleteAction.textColor = .white

        deleteAction.executeHandler = { [weak self] _ in
            // 삭제 작업을 처리합니다.
            self?.deleteItemAtIndexPath()
        }

        return deleteAction
    }
    
    func favoriteAction() -> IGSwipeAction {
        // 즐겨찾기 액션을 생성하여 반환합니다.
        let favoriteAction = IGSwipeAction(title: "Favorite", image: UIImage(named: "favorite"))

        favoriteAction.backgroundColor = .yellow
        favoriteAction.textColor = .black

        favoriteAction.executeHandler = { [weak self] _ in
            // 즐겨찾기 작업을 처리합니다.
            self?.favoriteItemAtIndexPath()
        }

        return favoriteAction
    }
    
    func deleteItemAtIndexPath() {
        // 선택한 셀을 삭제하는 로직을 작성합니다.
    }
    
    func favoriteItemAtIndexPath() {
        // 선택한 셀을 즐겨찾기하는 로직을 작성합니다.
    }
    
}

위의 코드에서는 swipeActions(for:direction:) 메서드를 구현하여 컬렉션 뷰 셀에서 밀어내기 작업을 처리합니다. deleteAction()favoriteAction() 메서드에서는 밀어내기 작업에 대한 액션 객체를 생성하고, 해당 액션을 선택할 때 실행될 핸들러를 정의합니다.

결론

이제 IGListKit을 사용하여 Swift로 컬렉션 뷰 셀 밀어내기 처리하는 방법을 알아보았습니다. IGListKit은 컬렉션 뷰의 성능을 최적화하고, 유지보수성을 향상시키는 데 큰 도움이 됩니다. IGListKit을 사용하여 애플리케이션에 향상된 사용자 경험을 제공해보세요!

참고 자료


이전 포스트 | 다음 포스트