diff --git a/ASHSpringyCollectionView/ASHSpringyCollectionViewFlowLayout.m b/ASHSpringyCollectionView/ASHSpringyCollectionViewFlowLayout.m index 8ed914b..d86c584 100644 --- a/ASHSpringyCollectionView/ASHSpringyCollectionViewFlowLayout.m +++ b/ASHSpringyCollectionView/ASHSpringyCollectionViewFlowLayout.m @@ -52,13 +52,20 @@ -(void)prepareLayout { // Step 1: Remove any behaviours that are no longer visible. NSArray *noLongerVisibleBehaviours = [self.dynamicAnimator.behaviors filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(UIAttachmentBehavior *behaviour, NSDictionary *bindings) { - BOOL currentlyVisible = [itemsIndexPathsInVisibleRectSet member:[[[behaviour items] firstObject] indexPath]] != nil; + id item = [[behaviour items] firstObject]; + BOOL currentlyVisible = NO; + if ([item isKindOfClass:[UICollectionViewLayoutAttributes class]]) { + currentlyVisible = [itemsIndexPathsInVisibleRectSet member:[(UICollectionViewLayoutAttributes *)item indexPath]] != nil; + } return !currentlyVisible; }]]; [noLongerVisibleBehaviours enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop) { [self.dynamicAnimator removeBehavior:obj]; - [self.visibleIndexPathsSet removeObject:[[[obj items] firstObject] indexPath]]; + id item = [[obj items] firstObject]; + if ([item isKindOfClass:[UICollectionViewLayoutAttributes class]]) { + [self.visibleIndexPathsSet removeObject:[(UICollectionViewLayoutAttributes *)item indexPath]]; + } }]; // Step 2: Add any newly visible behaviours.