0

いくつかのコードをクリーンアップしようとしていますが、そうすると問題が発生します。uitableviewcell に表示される 1 ~ 5 のランキングがあります。セルには、星の画像を指す 5 つの画像ビューがあります。starYellow.png と starGrey.png があります。ランキングが 3/5 の場合、セルは star1、star2、star3 を starYellow.png に、star4、star5 を starGrey.png に設定する必要があります。

プロパティ star%i の参照に問題があります。i はループ 1 ~ 5 の繰り返しです。[cell setValue:starYellow forKey:[NSString stringWithFormat:@"star%i.image", i]]; のようなことを行う方法がわかりません。

これが最適化したいコードです..

if (book.ratingOnline) {
[cell.ratingView.layer setOpacity:1.0f];
    for (int i = 1; i <= 5; i++) {            
        if (i == 1) {
            if (book.ratingOnline >= i) { [cell.star1 setImage:[UIImage imageNamed:@"starYellow.png"]]; }
            else { [cell.star1 setImage:[UIImage imageNamed:@"starGrey.png"]]; }
        }
        else if (i == 2) {
            if (book.ratingOnline >= i) { [cell.star2 setImage:[UIImage imageNamed:@"starYellow.png"]]; }
            else { [cell.star2 setImage:[UIImage imageNamed:@"starGrey.png"]]; }
        }
        else if (i == 3) {
            if (book.ratingOnline >= i) { [cell.star3 setImage:[UIImage imageNamed:@"starYellow.png"]]; }
            else { [cell.star3 setImage:[UIImage imageNamed:@"starGrey.png"]]; }
        }
        else if (i == 4) {
            if (book.ratingOnline >= i) { [cell.star4 setImage:[UIImage imageNamed:@"starYellow.png"]]; }
            else { [cell.star4 setImage:[UIImage imageNamed:@"starGrey.png"]]; }
        }
        else if (i == 5) {
            if (book.ratingOnline >= i) { [cell.star5 setImage:[UIImage imageNamed:@"starYellow.png"]]; }
            else { [cell.star5 setImage:[UIImage imageNamed:@"starGrey.png"]]; }
        }
    }
}

ありがとう。

4

1 に答える 1

0

すべての星を NSArray に追加します。

Cell.hで

NSArray *stars;

今、あなたができるスタートを参照するために

for (int i = 1; i <= 5; i++) {            
     UIImageView *star = [cell.stars objectAtIndex:i];
     //set the image to the star
}
于 2012-06-03T08:17:34.460 に答える