5

最近、ストーリーボードにUICollectionViewを追加しました。現在、別のビューによってビューにプッシュされています。これは正常に機能しているようですが、ストーリーボードエディターを使用して、エディターで正常に表示される35個のセルを含むようにビューを設定しました。アプリのセルは表示されません。一部のセルにはUIButtonがあり、これらもレンダリングされません。

ビューがレンダリングされていることを再確認するために、エディターで背景色を変更して再度実行すると、色が正しく更新されました。エディターでセルがセットアップされている場合、デリゲートコードを実行しなくても、セットアップによってセルが自動的にレンダリングされると想定するのは正しいですか?

どんな助けでもいただければ幸いです。

ありがとう

編集 - -

2番目のViewControllerに適切なデリゲートメソッドを実装し、セグエをプッシュしてcollectionview Controllerを起動しました。また、2番目のView Controllerヘッダーファイルにを追加し、.Mファイルに次のコードを追加しました。

// number of sections for the view
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
    return 1;
}

// numbers of items in section
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return 1;
}

// cell to return (uses the custom identifier of the cell in the storyboard)
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"quickNoteCell" forIndexPath:indexPath];
    return cell;
}

また、ストーリーボードのセルの識別子がquickNoteCellを使用していることを確認し、デフォルトの色を青に変更しましたが、まだセルにアイデアが表示されていませんか?

4

4 に答える 4

11

UICollectionViewControllerサブクラスを生成したため、セルは表示されません。これにより、に次の行が追加されましたviewDidLoad:。私の理解では、これにより、自動レイアウトを使用するとサイズ0.0に圧縮される空白のセルが生成されます。

この行を削除して、非表示のUICollectionViewCellsではなくストーリーボードで定義したセルを表示します

 // Register cell classes
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
于 2015-04-08T14:20:06.973 に答える
1

ジェイが言ったように、ここの行を@interfaceの下に置くと、機能するはずです。投稿したコードに問題はありません。

<UICollectionViewDelegate, UICollectionViewDataSource>
于 2012-11-16T03:56:16.760 に答える
0

UICollectionViewDelegateおよびUICollectionViewDataSourceプロトコルを実装しましたか?

collectionView:cellForItemAtIndexPath:が呼び出されていますか?

于 2012-11-06T21:31:09.123 に答える
0

カスタムcollectionViewItemsを使用していて、nibファイルレジスタの最初のnibからcollectionViewにデータをロードする場合:

let nib = UINib(nibName: reuseIdentifier, bundle: Bundle.main);
self.collectionView?.register(nib, forCellWithReuseIdentifier: reuseIdentifier);

コレクションビューのデリゲートでは、次のように呼び出します。

collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath)
于 2016-10-30T09:04:56.980 に答える