2014-01-17 84 views
15

私が達成しようとしているのは、UICollectionViewの3x3テーブルです。しかし、アプリケーションを実行しているときには表示されません。 CollectionViewの背景色が表示されます(青色に設定されています)。UICollectionView - セルが表示されない

storyboardを作成し、CollectionViewControllerをドラッグするだけです。このコントローラーでは、ネストされたCollectionViewも取り込まれました。次に、背景を青くして背景を紫色にしたセルを追加します(どちらもテスト用です)。最後にUILabelをドラッグします。今すぐ実行すると、エディタで明瞭に表示されていても、青色の背景は表示されますが、セルは表示されません。私はその後、カスタムUICollectionViewControllerを作成しようとしましたが、標準クラスではなくCollectionViewControllerにクラスを割り当て、セルに同じことを行いました(カスタムUICollectionViewCellを割り当てます)。カスタムUICollectionViewControllerで、私は次のメソッドを実装し:

-(NSIntegear)numberOfSectionsInCollectionView:(UICollectionView *)collectionView 
{ 
    return 1; 
} 

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
{ 
    return 9; 
} 

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *cellIdentifier = @"Cell"; 
    AboutYourGoalsMultiSelectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]; 
    [[cell goal]setText:@"T"]; 

    return cell; 
} 

は、私は、セルに「セル」の識別子を設定し、CollectionViewとカスタムUICollectionViewController間のデータソースとデリゲートの出口接続部を作りました。すべてがうまくコンパイルされます。 私は何が欠けていますか?エディタを使ってこれらの調整をする前に何か方法を表示してはいけませんか?

The storyboard editor with all the changes I did

+0

はCollectionViewCellのためのセル識別子は、 "セル" に設定されていますか? – mharper

+0

はい、コレクションの再利用可能な表示>識別子が「セル」に設定され、ID>復元IDも設定されます –

+0

私に何か飛び跳ねることはありません。私は、 'collectionView:cellForItemAtIndexPath:'にブレークポイントを設定して、それが呼び出されていることを確認し、他に何が間違っているのかを確認します。 – mharper

答えて

2

私はそれへの直接の解決策を見つけることができませんでしたので、私は新しいプロジェクトを設定しようとしたと同じ変更や微調整を行なったし、驚くべきことに、この時間は、すべてが働いてきました最初から。ストーリーボードを古いプロジェクトにコピーし、古いファイルをすべて削除して新しいプロジェクトのファイルに置き換えました。これまでのところすべてがうまくいっています。実際のエラーの内容はわかりませんが、うまくいきました。私の質問を見てみんなのおかげで!

2

あなたはあなたのコードの最初の行でエラーが発生しています。

-(NSIntegear)numberOfSectionsInCollectionView:(UICollectionView *)collectionView 

NSIntegearNSIntegerでなければなりません。

xcodeでこのエラーでプロジェクトを実行できないため、問題があるかどうかはわかりません。私はちょうど(ラベルなしで)あなたが言及した全く同じステップに従ってみたが、上記の修正とそれは私のためにうまくいった。ここではスクリーンショットです:

enter image description here

+0

それは単にタイプミスです。 – kelin

5

エラーの一般的な原因は、データソースとデリゲートを使用すると、ストーリーボードで作業している場合、短いでは、あなたがこの行を削除に必要

+0

私が今学んだように、もう一つの非常に不満なエラーソースはAutoLayoutです:UICollectionViewがサイズゼロにまで縮小されていないことを確認してください。 – BlenderBender

42

See my answer here、アウトレットに設定されていないことである。

// Register cell classes 
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier]; 
+0

これは私のために働かない主な理由でした。 XCodeはストーリーボードを使用するときにこれをデフォルトで挿入します。素晴らしいキャッチ。 – qiksand

+0

有用なaswer ... – Bangalore

+0

ちょうど追加 '[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier]; ' は、appleによって文書化されたセルをプログラムで登録するためのものです [registerClass:forCellWithReuseIdentifier:またはregisterNib:forCellWithReuseIdentifier:メソッドを使用してセルを再利用識別子に関連付けます。これらのメソッドは、親ビューコントローラの初期化プロセスの一部として呼び出すことができます。](https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/CreatingCellsandViews/CreatingCellsandViews.html) –

0

単純なCollectionViewController(カスタムではなく、実装による)を作成しようとしていて、アプリケーションの実行時にセルが表示されない場合は、次の手順を実行してください: -

  • まず、あなたのUICollectionViewControllerのためのココアタッチクラス(作成されていない場合)を作成する必要があります。 FILE - > NEW - > COCOA TOUCH CLASSを選択し、サブクラスのドロップダウンリストからUICollectionViewControllerを選択します。
  • あなたのCollectionViewControllerのあなたのアイデンティティ・インスペクタ・セクションの下に、カスタム・クラスのドロップダウン・リストからクラスを追加します。
  • 今、あなたの作成したクラスを開いて、このようなあなたの方法を編集します(デフォルトは0です)

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
    //#warning Incomplete method implementation -- Return the number of sections 
    return 1 
    } 
    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    //#warning Incomplete method implementation -- Return the number of items in the section 
    return 1 
    } 
    
  • のみ編集「戻り」の値を単に表示したいセル/アイテムの数を書きますまたはあなたが作成した(ここでは、私は1つのセルを作成しただけです)。

[IOS] [swift3] [Xcodeの]

関連する問題