1

基本的に私は約 3 日間 iOS アプリを作成しており (本を読んでデザイン パターンやフレームワークなどの基本的な知識を得た後)、これに丸 1 日を費やしています。表示できませんCollectionView。で始まるストーリーボードとTabBarView2 つのタブ (1 つは でTableView、もう 1 つは単なるUIView) は機能しますが、3 番目のタブ ( UICollectionView) は設定後も黒い画面を表示するだけです。設定方法:

1)ViewControllerをストーリーボードにドラッグしました

2)segueUITabBarControllerと新しい人との関係を築いたViewController

UICollectionView3) aを新しいものにドラッグViewController

4) 4UICollectionViewCell'sCollectionView

UILabels5)4を上記にドラッグCollectionViewCell's

6)新しいCollectionView'sデリゲートとデータソースと私のクラスのヘッダーファイルとの間の接続を確立しました(これは私CollectionViewが間違っていた場所かもしれません.必要)ViewController.hUITableView

CollectionView.m7)ファイルで次のメソッドを宣言しました

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
//Populates each cell using the data given (no data in this case).
//Should return a CollectionViewCell.
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];

return cell;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    //Gets the number of cells in each section.
    //Should return an integer value.
    return 2;
}

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    //Tells the collection view the number of sections it should have.
    //Should return an integer value.
    return 4;
}

このロジックはプログラマーとしての私には理にかなっていますが、Xcode の経験がほとんどないため、このクラスを自分のCollectionView何かにリンクするのを忘れていたのかもしれません。私がどこで間違ったのか誰か知っていますか?

ところで、ご参考までに、私はこの CollectionView を素晴らしい画像などを表示するというよりも、ナビゲーション テクニックとして使用しています。後でエミュレータに実際に表示されたときに、一般的な画像を挿入します。ありがとう

4

4 に答える 4

3

ラベルのデフォルトの色が黒であるため、何も表示されません。セル上のテキストを表示するには、テキストの色を明るい色に変更する必要があります。

Now, 

-> UICollectionViewCellのサブクラスである必要がある新しいファイルを追加し、ラベルからこのクラスに Ctrl キーを押しながらドラッグし ます

-> Attribute Inspector から cell の reuseIdentifier を宣言します (mainCell、私が取りました)

-> cellClass をUIViewControllerクラスにインポートします。

->このメソッドを使用して任意のテキストを表示する

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    mainViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"mainCell" forIndexPath:indexPath];
    cell.labelText.text = @"What-ever-you-want-display";
    return cell;
}

これが役立つことを願っています...

于 2013-10-22T10:30:21.550 に答える
0

ビュー コントローラー (コレクション ビューを含むもの) に UICollectionViewDelegateFlowLayout を使用するように指示しましたか? 例えば、

@interface RootViewController () <UICollectionViewDelegateFlowLayout, UICollectionViewDataSource>

また、セルの再利用識別子を設定しましたか? Interface Builder では、属性インスペクターでこれを設定します。次に cellForItemAtIndexPath: メソッドに移動し、この行を変更して識別子を使用します。UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];

セルのサイズを変更し、余白と間隔を設定するために使用されるメソッドについては、ドキュメントの UICollectionViewDelegateFlowLayout を確認してください。

于 2013-06-24T15:34:58.193 に答える
0

デフォルトのビュー コントローラー コード スニペットから registerClass コードを削除する

[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
于 2016-01-08T12:00:30.820 に答える