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 回答