0

星の評価画像を表示しようとしていますが、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なので、それは問題ではないと思います。

4

1 に答える 1

2

UIImageaと a を混同していUIImageViewます。配列には、ビューではないため、フレームを持たない画像が含まれています。

画像が割り当てられた個別の画像ビューのセットが必要です。

于 2013-01-02T11:06:11.230 に答える