UICollectionView删除部分

时间:2014-07-12 05:25:01

标签: ios7 xcode5 uicollectionview

我经常搜索,找到一个删除UICollectionView中的部分的解决方案 但所有提出的解决方案都会导致崩溃。

我使用的代码是:

[categoryCollection performBatchUpdates:^{
        NSIndexSet *indexSet=[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, keys.count-1)];
        [categoryCollection deleteSections:indexSet];

    } completion:nil];

更新

 @implementation BooksLayout
 - (void)prepareLayout {
// Registers my decoration views.
[self registerClass:[ShelfView class] forDecorationViewOfKind:[ShelfView kind]];
 }

 - (UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString  *)decorationViewKind atIndexPath:(NSIndexPath *)indexPath {
// Prepare some variables.
NSIndexPath *nextIndexPath = [NSIndexPath indexPathForItem:indexPath.row+1 inSection:indexPath.section];

UICollectionViewLayoutAttributes *cellAttributes = [self layoutAttributesForItemAtIndexPath:indexPath];
UICollectionViewLayoutAttributes *nextCellAttributes = [self layoutAttributesForItemAtIndexPath:nextIndexPath];

UICollectionViewLayoutAttributes *layoutAttributes = [UICollectionViewLayoutAttributes layoutAttributesForDecorationViewOfKind:decorationViewKind withIndexPath:indexPath];

CGRect baseFrame = cellAttributes.frame;
CGRect nextFrame = nextCellAttributes.frame;

CGFloat strokeWidth = 8;
CGFloat spaceToNextItem = 0;
if (nextFrame.origin.y == baseFrame.origin.y)
    spaceToNextItem = (nextFrame.origin.x - baseFrame.origin.x - baseFrame.size.width);

// Positions the horizontal line for this item.
    layoutAttributes.frame = CGRectMake(10,
                                        baseFrame.origin.y + baseFrame.size.height,
                                        300,
                                        strokeWidth);


layoutAttributes.zIndex = 1;
return layoutAttributes;
}

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *baseLayoutAttributes = [super layoutAttributesForElementsInRect:rect];
NSMutableArray * layoutAttributes = [baseLayoutAttributes mutableCopy];

for (UICollectionViewLayoutAttributes *thisLayoutItem in baseLayoutAttributes) {
    if (thisLayoutItem.representedElementCategory == UICollectionElementCategoryCell) {
            UICollectionViewLayoutAttributes *newHorizontalLayoutItem = [self layoutAttributesForDecorationViewOfKind:[ShelfView kind] atIndexPath:thisLayoutItem.indexPath];
            [layoutAttributes addObject:newHorizontalLayoutItem];

    }
}

return layoutAttributes;
}
 -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
if([sortString isEqualToString:@"title"]){
    NSArray *keys=[bookObj.orderedBooks allKeys];
    keys = [keys sortedArrayUsingSelector:
            @selector(localizedCaseInsensitiveCompare:)];
    return [[bookObj.orderedBooks objectForKey:[keys objectAtIndex:section]] count];
}
else
    return bookObj.booksArray.count;
}

0 个答案:

没有答案