0

初めて UICollectionView を作成しました.何が欠けていますか? 私はすべてを試しました。画像は間違いなくアプリにあり、正しく名前が付けられ、配列で見つかりました。それにもかかわらず、それらは表示されません:

私の IconCell のヘッダー:

#import <UIKit/UIKit.h>

@interface IconSelectionCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UIImageView *iconImageView;

@end

私のIconCellの実装:

#import "IconSelectionCell.h"
#import <QuartzCore/QuartzCore.h>

@implementation IconSelectionCell

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.restorationIdentifier = @"IconCell";
        self.backgroundColor = [UIColor clearColor];
        self.autoresizingMask = UIViewAutoresizingNone;

        CGFloat borderWidth = 1.0f;
        UIView *bgView = [[UIView alloc] initWithFrame:frame];
        bgView.layer.borderColor = [UIColor blueColor].CGColor;
        bgView.layer.borderWidth = borderWidth;
        self.selectedBackgroundView = bgView;

        CGRect myContentRect = CGRectInset(self.contentView.bounds, borderWidth, borderWidth);

        UIView *myContentView = [[UIView alloc] initWithFrame:myContentRect];
        myContentView.backgroundColor = [UIColor whiteColor];
        myContentView.layer.borderColor = [UIColor colorWithWhite:0.5f alpha:1.0f].CGColor;
        myContentView.layer.borderWidth = borderWidth;
        [self.contentView addSubview:myContentView];
    }
    return self;
}

@end

そして私のコレクションViewController:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"IconCell";

    IconSelectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

    cell.iconImageView.image = [UIImage imageNamed:[self.icons objectAtIndex:indexPath.row]];

    return cell;
}

コードを介してセルにイメージビューを追加する必要がありますか? Interface Builder でアウトレットを作成したばかりですが、何が足りないのでしょうか? ご協力いただきありがとうございます!

4

1 に答える 1

1

最初にプログラムで動作させることをお勧めします。IconSelectionCellクラスに (IBOutlet ではなく) のプロパティを指定しますUIImageView。次に、 のviewDidLoadメソッドでIconSelectionCell、プロパティに次のプロパティを設定しUIImageViewます: imageframe(!)、およびcontentMode

本当に Interface Builder とストーリーボードを使用したい場合は、アウトレットが適切に接続されていること、およびプロトタイプ セルの ID インスペクターのクラス フィールドにカスタム クラス名が含まれていることを確認し、画像を設定することを忘れないでください。ブレークポイントをレイアウトして、コードが実際に呼び出されているかどうか、いつ呼び出されているかを確認できるため、プログラム的に簡単です。

于 2013-06-04T15:46:08.993 に答える