将图像添加到UICollectionViewCell时应用程序崩溃

时间:2014-11-07 07:31:22

标签: ios objective-c uicollectionview uicollectionviewcell

我需要在UICollectionViewCell上添加图像和文本。 所以我使用了这段代码

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

    static NSString *cellIdentifier = @"cvCell";
CVCell *cell = (CVCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
     NSString *cellData = [firstSection objectAtIndex:indexPath.row];
    [cell.titleLabel setText:cellData];

    NSString *imageName = [second objectAtIndex:indexPath.row];

    NSLog(@"CV setting image for row %ld from file in bundle with name '%@'", (long)indexPath.row, imageName);

    cell.myImageView.image = [UIImage imageNamed:imageName];

    return cell;

}

FirstSection数组有一些名称,第二个数组有图像。显示文字但图像无效。

所以请告诉我我的代码中有什么不对。

我遇到这样的错误:

2014-11-07 15:18:56.928 CollectionViewExample[4459:151457] CV setting image for row 0 from file in bundle with name '(
    "real_estate_2.png",
    "photography_2.png",
    "auto_2.png",
    "electronics_2.png",
    "services_2.png"
)'
2014-11-07 15:18:56.929 CollectionViewExample[4459:151457] -[__NSArrayI length]: unrecognized selector sent to instance 0x7be86240

2014-11-07 15:18:57.044 CollectionViewExample[4459:151457] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI length]: unrecognized selector sent to instance 0x7be86240'
*** First throw call stack:
(
    0   CoreFoundation                      0x02bf5df6 __exceptionPreprocess + 182
    1   libobjc.A.dylib                     0x01975a97 objc_exception_throw + 44
    2   CoreFoundation                      0x02bfda75 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277
    3   CoreFoundation                      0x02b469c7 ___forwarding___ + 1047
    4   CoreFoundation                      0x02b4658e _CF_forwarding_prep_0 + 14
    5   UIKit                               0x008ad0be +[_UIAssetManager createAssetNamed:fromBundle:] + 66
    6    

3 个答案:

答案 0 :(得分:2)

我经常在UICollectionView中做的最常见的错误是由于没有写

  

[self.myCollectionView registerClass:[MyCollectionViewCell class]   forCellWithReuseIdentifier:@ “了myCell”];

您是否尝试过在imageView中提供静态图片?如果它工作,那么我假设您的阵列中的UIImage可能需要进行类型转换

请点击此链接:http://www.techotopia.com/index.php/An_Overview_of_iOS_6_Collection_View_and_Flow_Layout

答案 1 :(得分:0)

错误是你的新版本collectionViewCell或更早版本imageView现在没有名为(myImageOnCollectionView之前)或collectionCell的属性。这是因为您的集合视图不响应选择器。 (选择器与方法相同)。 如果您的实现文件(.h)中有自定义@property (nonatomic, strong) UIImageView *theNameYouWant; // The must be the same you implement en cellForRow... (简单方法),请添加以下内容:

IBOutlet

//使用故事板表示连接此属性。 (确保在storyBoard中,单元格必须是您自己的单元格类。)

连接时出现@property (nonatomic, strong) IBOutlet UIImageView *theNameYouWant; ;

{{1}}

//如果你有全部代码,请告诉我。

答案 2 :(得分:0)

对不起,答案很简单,但看起来像是

imageName它的NSArray不是NSString

cell.myImageView.image = [UIImage imageNamed:<NSArray>];

请NSLog(@&#34;%@&#34;,第二名);