2015-01-19 2 views
-2

Я выбираю 5 элементов в моем представлении коллекции, и я хочу его удалить. Помогите мне удалить выбранные элементы. Я помещаю одну кнопку, и когда я нажимаю эту кнопку, все выбранные элементы удаляются, которые я хочу. Код моей кнопки.Удалить выбранные объекты в виде коллекции

- (IBAction)btn_delete:(id)sender { 
    NSArray *selectedItemsIndexPaths = [self.MyCollectionView indexPathsForSelectedItems]; 
    NSLog(@"Selected images: %@",mySelectedArray); 
    [self.MyCollectionView deleteItemsAtIndexPaths:selectedItemsIndexPaths]; 
    [self.MyCollectionView reloadData]; 
} 
+0

С помощью этого кода я не могу удалить. Но когда я печатаю «mySelectedArray», он показывает мне все мои выбранные изображения. Справка Plz –

+0

вы должны удалить элементы в вашей коллекции данныхView пример: [self.MyCollectionViewDataArray removeObjectsAtIndexes: selectedItemsIndexes]; затем reloadData –

+0

http://stackoverflow.com/questions/16296351/how-to-delete-an-item-from-uicollectionview-with-indexpath-row – Sport

ответ

2

Сначала удалите объекты для DataSource, то попробуйте удалить ячейки из CollectionView

-(void)deleteCellInCollectionViewAtIndex:(int)index{ 
    if (self.collectionView) { 

      [self.collectionView performBatchUpdates:^{ 

       NSIndexPath *cellIndexPath = [NSIndexPath indexPathForRow:index inSection:0] ; 

       [self.collectionView deleteItemsAtIndexPaths:@[cellIndexPath]]; 

      } completion:nil]; 
     } 
} 
0
#import "ViewController.h" 
@interface ViewController() 
@end 

@implementation ViewController 

#pragma Mark For Collection View Methods 
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 

    return [patternImageArray count]; 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *identifier = @"Cell"; 
    PatternViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; 

    NSString *myPatternString = [patternImageArray objectAtIndex:indexPath.row]; 

    cell.ImageView.image = [UIImage imageNamed:myPatternString]; 
    cell.ImageLabel.text = myPatternString; 
    ind = indexPath.row; 
    return cell; } 

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 

    PatternViewCell *mySelectedCell = (PatternViewCell*)[collectionView cellForItemAtIndexPath:indexPath]; 
    mySelectedCell.ImageLabel.backgroundColor = [UIColor blueColor]; 
    mySelectedCell.ImageLabel.textColor = [UIColor whiteColor]; 
    [mySelectedArray addObject:indexPath]; 
    i = indexPath.row; } 

- (void)viewDidLoad { 

    [super viewDidLoad]; 
    patternImageArray = [[NSMutableArray alloc]initWithObjects:@"Thar.jpg",@"Thar1.jpg",@"Thar2.jpg",@"Thar3.jpg",@"Thar4.jpg",@"Thar5.jpg",@"Thar6.jpg",@"Thar7.jpg",@"Thar8.jpg", nil]; 
    self.MyCollectionView.multipleTouchEnabled = YES; 
    mySelectedArray = [[NSMutableArray alloc]init]; } 

- (IBAction)btn_delete:(id)sender 
{ 
    [self.MyCollectionView reloadData]; 
    NSLog(@"Selected images: %@",mySelectedArray); 
} 
@end 
+0

См. это мой код «viewcontroller.m». Я хочу удалить выбранные элементы, нажав кнопку, но я не могу удалить. Здесь я очищаю, что я выбираю изображения и что выбранные объекты изображений добавляют в новый массив. Что я пишу код в своей программе ???? –

0

В вашем btn_delete: метод, добавьте этот код

NSArray *selectedItemsIndexPaths = [self.MyCollectionView indexPathsForSelectedItems]; 
NSMutableIndexSet *indexSet = [[NSMutableIndexSet alloc] init]; 
for (NSInteger counter = 0; counter < [mySelectedArray count]; counter++) { 
    NSIndexPath *indexPath = mySelectedArray[counter]; 
    [indexSet addIndex:indexPath.row]; 
} 
[patternImageArray removeObjectsAtIndexes:indexSet]; 
[self.collectionView performBatchUpdates:^{ 

    [self.collectionView deleteItemsAtIndexPaths:mySelectedArray]; 

} completion:^(BOOL finished) { 
    [mySelectedArray removeAllObjects]; 
}]; 

В вашем CollectionView: didSelectItemAtIndexPath : method, вы должны сначала проверить, содержит ли массив уже этот индексный путь перед добавлением в массив. Вы можете увидеть это ниже:

if(![mySelectedArray containsObject:indexPath]) 
    [mySelectedArray addObject:indexPath]; 
+0

Спасибо вам. С помощью этого кода сделал мой проект –

+0

Ваш прием :) – Tejvansh

+0

Если вам нравится мой ответ и вам помогли, вы можете подняться – Tejvansh

Смежные вопросы