web-dev-qa-db-ja.com

UICollectionView-セルを表示しない

私が達成しようとしているのは、UICollectionViewを含む3x3テーブルです。ただし、アプリケーションの実行時にセルが表示されないだけです。 CollectionViewの背景色は表示されますが(これは青に設定されています)誰かがここで手伝ってくれませんか?

私がやったことは、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;
}

セルの識別子を「Cell」に設定し、dataSourceのアウトレット接続を作成し、CollectionViewとカスタムUICollectionViewControllerの間を委任しました。すべてが正常にコンパイルされます。それで私は何が欠けているのですか?エディターを使用するだけでこれらのすべての調整を行う前に、何らかの方法で表示されるべきではありませんか?

The storyboard editor with all the changes I did

18
Ke Vin

直接的な解決策が見つからなかったので、新しいプロジェクトをセットアップして同じ変更と微調整を行ったところ、驚くべきことに、今回はすべてが最初からうまくいきました。次に、ストーリーボードを古いプロジェクトにコピーし、古いファイルをすべて削除して、新しいプロジェクトのファイルに置き換えました。これまでのところすべてがうまく機能しています。実際のエラーが何であったかはわかりませんが、問題が解決したことを嬉しく思います。私の質問を見てくれた皆さん、ありがとう!

2
Ke Vin

ここで私の答えを参照 、つまり、ストーリーボードで作業している場合は、この行を削除する必要があります

 // Register cell classes
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
47
Alex Stone

エラーの一般的な原因は、データソースとデリゲートがアウトレットに設定されていないことです

6
Patricia

コードの最初の行にエラーがあります。

-(NSIntegear)numberOfSectionsInCollectionView:(UICollectionView *)collectionView

NSIntegearNSIntegerである必要があります。

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

enter image description here

3
Rami Enbashi

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

  • 最初に、UICollectionViewControllerのココアタッチクラス(作成されていない場合)を作成する必要があります。 FILE-> NEW-> COCOA TOUCH CLASSを選択し、サブクラスのドロップダウンリストからUICollectionViewControllerを選択します。
  • 次に、CollectionViewControllerのIDインスペクターセクションの下で、カスタムクラスのドロップダウンリストから選択してクラスを追加します。
  • 作成したクラスを開いて、次のようにメソッドを編集します。

    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
    }
    
  • "return"値(デフォルトでは0)を編集するだけで、表示するセルまたはアイテムの数を書き込むか、作成した(この場合、ここでは1つのセルしか作成していません)。

[ios] [Swift3] [xcode]

0
Mohammad Abraq