UICollectionView에서 셀을 삭제하려고합니다. 사용자 정의 레이아웃을 사용하고 있으며 컬렉션보기에 추가 한 긴 누르기 제스처 인식기에 대한 응답으로 삭제가 발생합니다. 읽은 내용부터 데이터 소스를 먼저 업데이트 한 다음 셀을 삭제해야합니다. 이는 내가하는 일입니다. 모든 것은 self.collectionView?.deleteItemsAtIndexPaths([indexPath])
까지 원활하게 진행됩니다.UICollectionView 셀 삭제
*** 캐치되지 않은 예외 'NSInternalInconsistencyException'로 인해 앱 종료 중 'UICollectionView가 존재하지 않는 색인 경로가있는 셀의 레이아웃 속성을 받았습니다. 이유 : {length = 2, path = 0 - 0} '
다른 유사한 질문을 읽었지만 제대로 작동하지 않는 것 같습니다.
let book = self.booksForCurrentAuthor[indexPath.row]
self.booksForCurrentAuthor.removeAtIndex(indexPath.row)
self.collectionView?.deleteItemsAtIndexPaths([indexPath])
//Delete book from database
편집 난이 관련이 있지만, 내 사용자 지정 레이아웃 객체에, 나는 prepareLayout()
방법 내에서 UICollectionViewLayoutAttributes
의 캐시를 만들 생각하지 않는다
. 캐시는 머리글, 셀, 바닥 글 및 장식보기의 특성에 대한 별도의 배열이있는 사전입니다.
그냥 제안 : UICollectionView를 사용할 때'indexPath.item'을 사용하십시오. –
변경된 사항 - 다소 표준 컬렉션보기 레이아웃을 사용할 때 기능적 차이가 있습니까? – cweber105
없음. 둘 다 경로의 두 번째 인덱스에 대한 편리한 접근 자입니다. –