web-dev-qa-db-ja.com

UICollectionViewの代わりに黒い画面が表示されます

私は無限スクロールUICollectionView seen here を再実装しようとしています。私にとって欠けていたもの:

ViewController.h

@interface ViewController : UIViewController<UICollectionViewDataSource, UICollectionViewDelegate>

@end

DataCell.h

@interface DataCell : UICollectionViewCell
@property (nonatomic, strong) UILabel *label;
@end

DataCell.m

#import "DataCell.h"

@implementation DataCell

-(instancetype)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if(self){
        self.label = [[UILabel alloc] initWithFrame:self.bounds];
        self.autoresizesSubviews = YES;
        self.label.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
                                       UIViewAutoresizingFlexibleHeight);
        self.label.textAlignment = NSTextAlignmentCenter;
        self.label.adjustsFontSizeToFitWidth = YES;

        [self addSubview:self.label];
    }

    return self;
}

@end

CustomCollectionView.h:

@interface CustomCollectionView : UICollectionView

@end

プロジェクト全体で、ストーリーボードと通常のUIViewControllerを使用しました。このビューコントローラーで、Interface BuilderにUICollectionViewを追加しました。コレクションビューのアウトレットをビューコントローラーに接続し、データソースメソッドとデリゲートメソッドをビューコントローラーに再度セットアップしました。 UICollectionViewCellのカスタムクラスと再利用識別子もInterface Builderで設定しました。

したがって、すべてが機能するはずですが、黒い画面しか表示されません。何が欠けていますか?プロジェクト全体をダウンロードできます ここ

24
testing

ラベルの色を忘れただけで、CollectionViewを正しく構成しています:)

    [self.label setTextColor:[UIColor whiteColor]];

enter image description here

それが役に立てば幸い!

24

ストーリーボードのコレクションビューの背景色を手動で設定する必要があります。

デフォルトでは黒です(ただし、ストーリーボードエディターには表示されません)。

enter image description here

5
SoliQuiD

同じ問題がありました。黒い画面は、表示するコレクションビューで使用可能なデータがないことを示すもののようです。コレクションビューの背景色を変更してみてください。変更した色が表示される場合は、コレクションビューが機能しています。タグを付けてコレクションビューに画像ビューを追加し(例:画像ビューのタグ値を100に設定)、cellforItemAtIndexPathを使用して画像を画像ビューに設定します。 (カスタムセルを使用してこれを行うことができます。ただし、今のところ、コレクションビューを機能させるには、imageviewのタグを使用した割り当てが適しています)

UIImageView * ImageView = (UIImageView *)[cell viewWithTag:100];
ImageView.image = [UIImage imageNamed:[images objectAtIndex:indexPath.row]];
4
Tony

collectionViewとコレクションビューのセルの両方に透明な背景があることが偶然起こりました

2
Dan Precup
[self.collectionView registerNib:[UINib nibWithNibName:@"ProductCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"ProductCollectionViewCell"];

self.collectionView.backgroundColor = [UIColor clearColor];
1

スウィフトでは、

self.label.textColor = UIColor.whiteColor()
1
Ghulam Rasool