1

カスタム UICollectionViewCell サブクラスがあります。セルには、sizeForItemAtIndexPath メソッドで設定している 2 つのサイズがあります。

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
    CGSize size = CGSizeMake(320, 60);
    if ([[[_locationsArray objectAtIndex:indexPath.row] objectForKey:@"hasAlert"] boolValue]) {
        size = CGSizeMake(320, 155);
    }
    return size;
}

すべてのアイテムが同じサイズの場合、すべて問題ありません。この問題は、さまざまなサイズのセルがあり、そのうちの 1 つを削除すると、reloadData 後にすべてのセルが消えるときに発生します。セルを削除する方法は次のとおりです。

-(void)MyCollectionViewCell:(MyCollectionViewCell *)cell didDeleteRowForIndex:(int)index{
    [_locationTable performBatchUpdates:^(void){
        [_locationsArray removeObjectAtIndex:index];
        NSIndexPath *indexPath =[NSIndexPath indexPathForRow:index inSection:0];
        [_locationTable deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
    } completion:^(BOOL finished) {
        [self updatePlist];
        [_locationTable reloadData];
    }];
}

これを解決する方法はありますか?ところで、collectionViewをリロードしていないときに機能しますが、indexPathsがセルと一致しません。

ありがとう

4

0 に答える 0