54379


UICollectionViewをソースコードのみ（Storyboard,Xibは使用しない）で実装していますが、セルが表示されません。  
※UICollectionView自体は表示されていますが、「UICollectionViewDelegate」「UICollectionViewDataSource」が呼び出されてないようです。

UICollectionViewとセルのそれぞれに背景色を設定しましたが、UICollectionViewのみ反映されています。  
また、各ソースコードにログ出力処理を追加しましたが、delegate,DataSourceは呼び出されていないようです。

## ヘッダーファイル（.h）

[code]

    #import <UIKit/UIKit.h>
    
    @interface ViewController : UIViewController
    @end
    
[/code]

## 実装ファイル（.m）

[code]

    #import "ViewController.h"
    
    @interface ViewController ()<UICollectionViewDelegate, UICollectionViewDataSource> {
        UICollectionView *coll;
    }
    
    @end
    
    @implementation ViewController
    
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        NSLog(@"===viewDidLoad===");
        coll.delegate = self;
        coll.dataSource = self;
    
        UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc] init];
        flowLayout.itemSize = CGSizeMake(100, 100);
        [flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
        coll = [[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:flowLayout];
        coll.backgroundColor = UIColor.grayColor;
        [coll registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];
    
        [self.view addSubview:coll];
    }
    
    -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
        return 1;
    }
    
    -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    {
        NSLog(@"===numberOfItemsInSection===");
        return 10;
    }
    
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        NSLog(@"===cellForItemAtIndexPath===");
        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
        cell.backgroundColor = UIColor.redColor;
        return cell;
    }
    
    @end
    
[/code]

背景色が赤色のセルが10個表示される事を期待します。


CC BY-SA 4.0
2019-04-22T02:23:46.257
54378
2019-04-24T02:57:09.033
2019-04-22T08:30:16.637
2238
33025
question
objective-c uicollectionview uicollectionviewcell
UICollectionViewのセルが表示されない。


dataSourceやdelegateの位置をインスタンス化後に移動させると正常に動きました！！

[code]

    #import "ViewController.h"
    
    @interface ViewController ()<UICollectionViewDelegate, UICollectionViewDataSource> {
        UICollectionView *coll;
    }
    
    @end
    
    @implementation ViewController
    
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        NSLog(@"===viewDidLoad===");
    
        UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc] init];
        flowLayout.itemSize = CGSizeMake(100, 100);
        [flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
        coll = [[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:flowLayout];
        coll.backgroundColor = UIColor.grayColor;
        [self.view addSubview:coll];
    
        [coll registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];
        coll.delegate = self;
        coll.dataSource = self;
    }
    
    -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
        return 1;
    }
    
    -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    {
        NSLog(@"===numberOfItemsInSection===");
        return 10;
    }
    
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        NSLog(@"===cellForItemAtIndexPath===");
        UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
        cell.backgroundColor = UIColor.redColor;
        return cell;
    }
    
    @end
    
[/code]


CC BY-SA 4.0
2019-04-22T02:36:36.997
54379
2019-04-24T02:57:09.033
2019-04-24T02:57:09.033
19110
33025
54378
answer