2017-11-15 16 views
0

셀을 이동하여 UICollectionView의 레이아웃을 업데이트하고 있습니다.완료 블록이 setCollectionViewLayout에서 호출되지 않았습니다.

collectionView.moveItem(at: sourceIndex, to: destIndex) 

collectionView.collectionViewLayout.invalidateLayout() 

collectionView.setCollectionViewLayout(collectionView.collectionViewLayout, animated: true) 
{ (done) in 
     print("i'm here") 
} 

그러나 애니메이션이 제대로 수행되는 동안 setCollectionViewLayout의 완료 블록이 호출되지 않습니다. 아이디어가 있으십니까?

감사합니다

+0

그리고 마침내 moveItem 이미 애니메이션을하기 때문에 내가 setCollectionViewLayout을 필요로하지 않는다는 것을 발견 ... – Max

답변

0

편집 :

BallpointBen가 올바른지 - 구조 변경은 필요하지 않습니다.

나는 당신이 기존 레이아웃에 새로운 레이아웃을 설정하고 있기 때문에 당신이 완료 블록을하지 않는 이유는 믿습니다. 따라서 실제 변화가 없으므로 "완료"가 없습니다.

으악 ... 구조는 아마되어야합니다 :

collectionView.setCollectionViewLayout(collectionView.collectionViewLayout, 
     animated: true, completion: { 
      (done) in 
      print("I'm here") 
    }) 

+1

입니다 OP가 작성한 것과 같습니다. – BallpointBen

+0

'completion :'이 필요하지 않습니까? – DonMag