下标需要接口NSMutableArray的大小,这在非脆弱的ABI中不是常量

时间:2012-04-11 05:21:59

标签: objective-c ios

以下是我收到错误的摘录:

    -(IBAction)rateButtonClick:(id)sender{

    NSMutableArray *starImage = [[NSMutableArray alloc]initWithObjects:starImage1, starImage2, starImage3, starImage4, starImage5, nil];

    NSArray *halfRateButton = [[NSArray alloc]initWithObjects:halfRateButton1, halfRateButton2, halfRateButton3, halfRateButton4, halfRateButton5, nil];

    int buttonClicked = (((UIButton *)sender).tag);
    int i;

    for (i = 0; i < buttonClicked; i++) {
        **starImage[buttonClicked].image = [UIImage imageNamed:@"rate.png"];** 
    }

    if (lastButtonClicked != buttonClicked) {
        **starImage[buttonClicked].image = [UIImage imageNamed:@"star-half-full.png"];**
    }else
        **starImage[buttonClicked].image = [UIImage imageNamed:@"rate.png"];**
        lastButtonClicked = buttonClicked;

    for (i = 0; i <= buttonClicked; i++) {
        **halfRateButton[i].hidden = YES;**
    }
}

错误出现在标记的行中。将它们更改为

    **[starImage objectAtIndex:i].image = [UIImage imageNamed:@"rate.png"];** 

无效。我收到一个错误:

  

在类型(id)的对象上找不到图像属性。

这里,satrImage1到starImage5是UIImageViews。 halfRateButton1到halfRateButton5是按钮。

1 个答案:

答案 0 :(得分:2)

我不确切地知道你想要什么,但我认为以下答案可以帮助你摆脱错误。 试试这个

[[starImage objectAtIndex:i] setImage:[UIImage imageNamed:@"rate.png"]];

UIImageView *temp = [starImage objectAtIndex:i];
tmp.image = [UIImage imageNamed:@"rate.png"];