[swift] Swift IGListKit을 사용한 특정 셀 삭제하기

IGListKit은 UICollectionView를 쉽게 구성하고 관리할 수 있는 라이브러리입니다. IGListKit을 사용하면 데이터 소스를 업데이트하거나 특정 셀을 삭제하고 삽입하는 작업을 쉽게 수행할 수 있습니다.

이 튜토리얼에서는 IGListKit을 사용하여 특정 셀을 삭제하는 방법을 알아보겠습니다. 예를 들어, 인스타그램 피드의 게시물을 삭제하는 기능을 구현해보겠습니다.

IGListKit 데이터 소스 준비하기

우선 IGListKit을 사용하기 위해 데이터 소스를 준비해야 합니다. IGListKit의 ListDiffable 프로토콜을 준수하는 데이터 모델을 만들어야 합니다. 간단한 예시로 Post라는 데이터 모델을 만들어보겠습니다.

class Post: NSObject, ListDiffable {
    let identifier: String
    let content: String

    init(identifier: String, content: String) {
        self.identifier = identifier
        self.content = content
    }

    // ListDiffable 프로토콜 구현
    func diffIdentifier() -> NSObjectProtocol {
        return identifier as NSObjectProtocol
    }

    func isEqual(toDiffableObject object: ListDiffable?) -> Bool {
        guard let object = object as? Post else { return false }
        return identifier == object.identifier
    }
}

IGListKit Adapter 설정하기

IGListKit을 사용하기 위해 Adapter를 설정해야 합니다. Adapter는 데이터 소스와 UICollectionView를 연결하는 역할을 합니다.

let adapter = ListAdapter(updater: ListAdapterUpdater(), viewController: self)
adapter.collectionView = collectionView
adapter.dataSource = self

특정 셀 삭제하기

특정 셀을 삭제하기 위해서는 먼저 데이터 소스에서 해당 셀을 삭제해야 합니다. 데이터 모델의 배열에서 삭제할 데이터를 제거한 후, adapter.performUpdates(animated: true) 메서드를 호출하여 업데이트를 수행합니다.

// 데이터 모델에서 삭제할 데이터 제거
let postIndex = 0 // 삭제할 데이터의 인덱스
data.remove(at: postIndex)

// 업데이트 수행
adapter.performUpdates(animated: true)

위의 코드에서 postIndex 변수에 삭제할 데이터의 인덱스를 지정하면 됩니다. 그리고 데이터 모델에서 해당 인덱스에 해당하는 데이터를 제거한 후, adapter.performUpdates(animated: true)를 호출하면 IGListKit이 업데이트를 수행하고 화면에 반영됩니다.

마무리

이제 IGListKit을 사용하여 특정 셀을 삭제하는 방법에 대해 알아보았습니다. IGListKit은 업데이트를 관리하는 데 강력한 도구이므로, 데이터의 추가, 수정, 삭제 등 다양한 작업에 유용하게 사용할 수 있습니다. IGListKit의 공식 문서를 참조하여 더 많은 기능을 살펴보세요.

참고 자료