私は自分のプロジェクトのためにいくつかの変更を加えてこのチュートリアルに従っています: 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 が両方とも有効なオブジェクトであることがわかります。