Как получить несколько выбранных ячеек CollectionViewCell из UICollectionView?

#ios #objective-c #uitableview

#iOS #objective-c #uitableview

Вопрос:

Я создаю xib file и добавляю Collection View Cell . Я добавляю индикатор выполнения в заголовочный файл ячейки, как в следующем коде.

 #import <UIKit/UIKit.h>
#import "MobileVLCKit/VLCMediaThumbnailer.h"

@interface AITFileCell_grid : UICollectionViewCell <VLCMediaThumbnailerDelegate>
@property (strong, nonatomic) IBOutlet UIImageView *fileIcon;
@property (strong, nonatomic) IBOutlet UILabel *fileName;
@property (strong, nonatomic) IBOutlet UILabel *fileSize;
@property (strong, nonatomic) NSURL *filePath ;

  (NSString *)reuseIdentifier ;


@end

@interface AITFileCell_grid()
{
    BOOL fetching ;

@public
    UIProgressView *dlProgress;
    UILabel *dlProgressLabel;
}
@end
  

Я также создаю другую xib file и добавляю Collection View для загрузки Collection View Cell .

Я хочу выбрать несколько файлов и скрыть progress bar их на каждом cell button .

Но я не могу получить ячейку, когда нажимаю кнопку удаления, следуя следующему коду.

 - (IBAction) buttonCancel:(id)sender {

    if(self.collectionView.indexPathsForSelectedItems > 0){

        for(NSIndexPath *indexPath in self.collectionView.indexPathsForSelectedItems){

            AITFileCell_grid *cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"AITFileCell_grid" forIndexPath:indexPath];

                //Hide the progress bar
                cell->dlProgressLabel.text = @"0%";
                cell->dlProgress.hidden = YES;
                cell->dlProgressLabel.hidden = YES;

        }
    }
        [self setEditing:NO animated:YES];
}
  

Я установил точку останова на cell->dlProgressLabel.text = @"0%"; , она отображается nil в журнале … и индикатор выполнения ничего не изменил.

Но я могу установить значение cell->dlProgressLabel.text и установить значение cell->dlProgress в NSTimer .

Почему cell определение в UIButton кажется неэффективным ?…

Может кто-нибудь помочь и научить меня, как решить?

Ответ №1:

Вы удаляете Cell из очереди, выполняя

 AITFileCell_grid *cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"AITFileCell_grid" forIndexPath:indexPath];
  

что может отличаться от того, что вы выбрали, вместо этого получите выбранную ячейку из CollectionView

 AITFileCell_grid *cell = [self.collectionView cellForItemAtIndexPath: indexPath]