não foi possível retirar da fila a visualização da coleção ao usar objetos UIImage na célula
-
20-12-2019 - |
Pergunta
Estou tendo problemas para executar esse código depois de ele travar após várias iterações.O comportamento pretendido é simplesmente exibir imagens em uma Visualização de Coleção a partir de um array.Se eu comentar todos os objetos do array, ele será executado com uma visualização de coleção vazia.logo.png existe e pode ser carregado corretamente em outras partes do aplicativo por meio do menu suspenso.Delegate e DataSource estão configurados corretamente como self.A Visualização da Coleção possui uma única célula exibida com um ImageView (marcada como 100) e nada mais.Ter um rótulo em vez de uma visualização de imagem também causa uma falha em todos os objetos da matriz.
A saída de depuração é
Não foi possível retirar da fila uma visualização do tipo:UICollectionElementKindCell com identificador Cell - obrigatório
registre uma ponta ou classe para o identificador ou conecte uma célula protótipo em um storyboard
O código relevante é o seguinte:
ViewController.m
#import "demo_frameworkViewController.h"
@interface demo_frameworkViewController ()
@end
@implementation demo_frameworkViewController {
NSMutableArray *imageArray;
}
@synthesize imageArray;
- (void)viewDidLoad
{
imageArray = [[NSMutableArray alloc] init];
[imageArray addObject:[UIImage imageNamed:@"logo.png"]];
[imageArray addObject:[UIImage imageNamed:@"logo.png"]];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark Collection View Methods
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return [self.imageArray count];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
UIImageView *imageDemo = (UIImageView *)[cell viewWithTag:100];
imageDemo.image =[imageArray objectAtIndex:indexPath.row];
[cell.layer setBorderWidth:2.0f];
[cell.layer setBorderColor:[UIColor whiteColor].CGColor];
return cell;
}
@end
ViewController.h
#import <UIKit/UIKit.h>
@interface demo_frameworkViewController : UIViewController <UINavigationControllerDelegate, UICollectionViewDelegate, UICollectionViewDataSource>
@property (nonatomic, retain) NSArray *imageArray;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
Solução
A saída de depuração significa que não é possível encontrar uma célula chamada 'Célula'.Em seu storyboard você precisa definir o Collection Reusable View
valor do UICollectionViewCell para 'Cell' para que o UICollectionView saiba qual célula usar