我正在尝试为iOS应用程序创建一个简单的图库。我正在使用ViewController中的UICollectionView。一切似乎都运行正常,但我无法获得我试图用来显示集合视图单元格内部的图像。我将在这里转储一些代码,我一直在拼命寻找解决方案,但似乎没有任何工作。
这是gallery.m文件:
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;
{
//just a random value for testing
return 2;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection: (NSInteger)section
{
//another random test value
return 5;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"customCell";
customCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier
forIndexPath:indexPath];
//UIImage *image = [dataArray objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:@"skull.png"];
//I tried all of the below code to get the image to show but nothing seemed to work
//[cell.imageView setImage:[UIImage imageNamed:@"skull.png"]];
//[cell.imageView setNeedsDisplay];
//[cell.imageView reloadInputViews];
return cell;
}
这是customCell.h文件(UIImageView出口连接到集合视图单元格内的图像视图):
#import <UIKit/UIKit.h>
@interface customCell : UICollectionViewCell
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
@end
关于故事板中的连接一切都应该没问题,也很难在这里展示,但我会尝试解释。 UICollectionView连接在gallery.h文件中,如下所示:
@interface gallery : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>
@property (strong, nonatomic) IBOutlet UICollectionView *collectionView;
@end
故事板中的集合视图单元格具有自定义类&#34; customCell&#34;和标识符&#34; customCell&#34;。
如果有人能指出我的错误可能会让我感到非常棒! 谢谢!
答案 0 :(得分:5)
我有这个非常相似的问题。当使用故事板时,我无法在uicollection视图单元格内显示图像视图。我刚刚在CollectionViewController的ViewDidLoad中删除了以下代码:
//[self.collectionView registerClass:[CustomCollectionViewCell class]forCellWithReuseIdentifier:reuseIdentifier];
现在ImageView显示在单元格内。
答案 1 :(得分:1)
在故事板中查看,有时在单元格中,xCode将图像框架设置为(0,0,0,0)。它让我疯了很多次^^
编辑: 要创建自定义集合单元格,请创建一个空的XIB文件。 在其中添加一个collectionViewCell,您可以随心所欲。 与你建立联系.h文件。
在你的viewController中 - &gt; viewDidLoad方法添加
[myCollectionView registerNib:[UINib nibWithNibName:@"collectionCellXIB" bundle:nil] forCellWithReuseIdentifier:myIdentifier];
在cellForRowAtIndexPath
中customCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:myIdentifier forIndexPath:indexPath];
if(!cell)
{
cell = [collectionView dequeueReusableCellWithReuseIdentifier:myIdentifier forIndexPath:indexPath];
}