2016-08-01 3 views
2

didSelect 메서드의 collectionview에서 셀을 삭제하려고했습니다.collectionview에서 섹션을 다시로드하는 방법

데이터 삭제가 제대로 작동합니다.

하지만이납니다 :

이유 : '잘못된 업데이트 : 섹션의 유효하지 않은 번호입니다. 업데이트 (1) 후 콜렉션보기에 포함 된 섹션의 수는 업데이트 (2) 전에 콜렉션보기 에 포함 된 섹션의 수와 같거나 삽입되거나 삭제 된 섹션의 수와 같아야합니다 ( ) 0 개 삽입, 0 개 삭제됨). '

func deleteMovie(cell: MoiveCollectionViewCell) { 
var indexPath: NSIndexPath = self.collectionView!.indexPathForCell(cell)! 
// remove and reload data 
self.collectionView.deleteItemsAtIndexPaths([indexPath]) 
self.collectionView.reloadSections(NSIndexSet(index: indexPath.section)) 
} 

numberOfSectionsInCollectionView FUNC : 난 그냥 섹션의 수를 다시로드 할

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
    //number_per_section = 3 
    if manager.movie_List.count % number_per_section == 0 
    { 
     return manager.movie_List.count/number_per_section 
    } 
    else { 
     return manager.movie_List.count/number_per_section + 1 
     } 
} 

는 세포 기능을 삭제합니다. 무엇을 추가해야합니까?

답변

1

문제는 section에서 cell을 제거하는 것입니다. 문제가 해결되지 않습니다.

cell을 제거한 후에는 manager.movie_Listarray에도 알려야합니다. 따라서 배열에서 selectedIndex 데이터를 제거한 다음 사용해보십시오! 그래서 먼저 배열 (아마도 사전)에서 개체를 삭제

self.collectionView.deleteItemsAtIndexPaths([indexPath]) 
    self.collectionView.reloadSections(NSIndexSet(index: indexPath.section)) 

:

1

당신은 당신이 전화를하기 전에 먼저 데이터 소스를 업데이트해야합니다. 제거 할 항목의 애니메이션을 제공 할 때마다 호출을 수행 할 필요가 없습니다.

그래서 당신은이 작업을 수행 할 수 있습니다 :

let indexSet = IndexSet(integer: indexPath.section) 
    self.collectionView.reloadSections(indexSet) 
관련 문제