UIImageView 不会在 UICollectionViewCell 中加载图像
UIImageView won't load image in UICollectionViewCell
我是 UICollectionViews 的新手。我已经设置了一个基本的 UICollectionViewController,其中包含 2 行单元格。在控制器中,我有一个单元格,我将一个 UIImageView 拖入其中。我将它连接到自定义单元格 class。我确保在界面生成器中也将单元格的 class 更改为这个。在我的视图控制器中,我有这段代码:
@implementation StickersViewController
static NSString * const reuseIdentifier = @"stickerCell";
- (void)viewDidLoad {
[super viewDidLoad];
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
//Add the images
self.images = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"one.png"], [UIImage imageNamed:@"two.png"], [UIImage imageNamed:@"three.png"], nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark <UICollectionViewDataSource>
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return [self.images count];
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
StickerCell *cell = (StickerCell *)[collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
cell.imageView.image=self.images[indexPath.row];
return cell;
}
我在 运行 代码时收到此错误:UICollectionViewCell imageView]:无法识别的选择器发送到实例 0x7fe8e0e7828。不知道为什么。看来我已经正确连接了。有人可以指点我可能出错的地方吗?
问题出在这里:
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
您注册的是 UICollectionViewCell
而不是您的自定义子class。所以应该是:
[self.collectionView registerClass:[StickerCell class] forCellWithReuseIdentifier:reuseIdentifier];
此外,请记住,如果设置是在 Storyboard 中完成的,您不需要自己注册 class,因为它会自动为您处理(前提是您设置了自定义 class & 重用标识符)
我希望这是有道理的
参考本教程http://www.raywenderlich.com/22324/beginning-uicollectionview-in-ios-6-part-12
你会得到正确的答案。可能我认为你没有设置集合可重用视图标识符
select 集合视图单元格转到属性检查器并设置集合可重用视图标识符 = 单元格
我是 UICollectionViews 的新手。我已经设置了一个基本的 UICollectionViewController,其中包含 2 行单元格。在控制器中,我有一个单元格,我将一个 UIImageView 拖入其中。我将它连接到自定义单元格 class。我确保在界面生成器中也将单元格的 class 更改为这个。在我的视图控制器中,我有这段代码:
@implementation StickersViewController
static NSString * const reuseIdentifier = @"stickerCell";
- (void)viewDidLoad {
[super viewDidLoad];
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
//Add the images
self.images = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"one.png"], [UIImage imageNamed:@"two.png"], [UIImage imageNamed:@"three.png"], nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark <UICollectionViewDataSource>
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return [self.images count];
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
StickerCell *cell = (StickerCell *)[collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
cell.imageView.image=self.images[indexPath.row];
return cell;
}
我在 运行 代码时收到此错误:UICollectionViewCell imageView]:无法识别的选择器发送到实例 0x7fe8e0e7828。不知道为什么。看来我已经正确连接了。有人可以指点我可能出错的地方吗?
问题出在这里:
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
您注册的是 UICollectionViewCell
而不是您的自定义子class。所以应该是:
[self.collectionView registerClass:[StickerCell class] forCellWithReuseIdentifier:reuseIdentifier];
此外,请记住,如果设置是在 Storyboard 中完成的,您不需要自己注册 class,因为它会自动为您处理(前提是您设置了自定义 class & 重用标识符)
我希望这是有道理的
参考本教程http://www.raywenderlich.com/22324/beginning-uicollectionview-in-ios-6-part-12
你会得到正确的答案。可能我认为你没有设置集合可重用视图标识符
select 集合视图单元格转到属性检查器并设置集合可重用视图标识符 = 单元格