2

私は自分のプロジェクトのためにいくつかの変更を加えてこのチュートリアルに従っています: http://www.appcoda.com/ios-programming-uicollectionview-tutorial/

IB が作成する UIImageView のインスタンスを取得しようとしています。

これが私の IB のスクリーンショットです。

ここに画像の説明を入力

UIImageView を含む FeedViewCell というカスタム クラスがあります。cellForItemAtIndexPath コードは次のとおりです。

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identifier = @"Cell";

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

    UIImageView *imageView = (UIImageView *)[cell viewWithTag:100];
    imageView.image = [UIImage imageNamed:[postPhotos objectAtIndex:indexPath.row]];

    return cell;
}

問題は、UIImageView *imageView = (UIImageView *)[cell viewWithTag:100]; ということです。nil として返されます。とにかくviewWIthTagメソッドを使用するのは奇妙に思えますが、デバッガーでは、imageViewがUICollectionViewCellのサブビューであるという兆候は見られません。このデバッグ画面を見ると、セルに UIImageView サブビューがないように見えることがわかります。

ここに画像の説明を入力

ただし、CollectionView のサブビューとして 2 つの UIImageView が表示されます。

IBで何か間違ったことをしているようです。私は常に IB に苦労しているように見えるので、これは驚くべきことではありません (少なくともコードを見れば、何が起こっているかがわかります)。

ご提案ありがとうございます。

更新: IB を使用して ImageView をフックすることを断念し、以下のコードで作成してみました: http://cl.ly/QFxs

画像が正しく表示されません。ただし、スクリーンショット (デバッガー) を見ると、images と imageViews が両方とも有効なオブジェクトであることがわかります。

4

2 に答える 2

1

を呼び出している場合はself.collectionView registerClass...、それを削除する必要があります。ストーリーボードは、この登録を自動的に処理します。

于 2014-01-28T08:33:08.553 に答える