星の評価画像を表示しようとしていますが、3 つの星の画像があります: 完全な星、半分の星、および選択されていない灰色の星です。
星を保持する配列があります。したがって、評価 4.5 の場合、選択された 4 つと半分が保持されます。星の複数のインスタンスを作成する必要がないように、同じ星のオブジェクトを配列に追加しています。私は 3 つのインスタンスしか持っておらず、私の計算ではaddObject
、次のようにこれら 3 つの異なる画像を使用しています。
for (int i = 0; i < ratingCount; i++) {
if (rating >= 1)
[self.imageViews addObject:self.selected];
else
[self.imageViews addObject:self.halfSelected];
rating--;
}
これらの画像の描画に問題があります。後続のループでは、次のようにそれらを引き出そうとしています:
for (int i = 0; i < self.imageViews.count; ++i) {
UIImageView *imageView = [self.imageViews objectAtIndex:i];
imageView.frame = CGRectMake(i * (5 + imageWidth), 0, imageView.frame.size.width, imageView.frame.size.height);
[self.view addSubview:imageView];
}
imageView.frame
がnullとして出力されるため、これはクラッシュします。デバッグすると、 null が出力されます<0x00000000>
。フレームが null として出力されるのはなぜですか? 画像は null として印刷されず、配列に適切に追加されていることがわかっています。
imageView.frame を削除すると、[UIImage superview]: unrecognized selector sent to instance 0x8644590
イメージはimageNamed
、メソッドで使用してインスタンス化されますinit
。それは問題を引き起こしますか?彼らは早く割り当てられますか?を使用してデバッガーで画像を表示しようとすると null が出力されるはずpo
なので、それは問題ではないと思います。