0

NSObject(Circle)の一部であるUIImageViewsを割り当てて初期化しようとしていますが、これらのCirclesの配列があります。ただし、XCodeは、UIImageViewsの割り当てと初期化を好みません。

コードは次のとおりです。

//allocate and set circleArray
circleArray = [[NSMutableArray alloc] init];
for (int i = 0; i < 16; i++) {
    [circleArray addObject:[Circle alloc]];
    [[circleArray objectAtIndex:i] setTouched:0];
    [[circleArray objectAtIndex:i] imageView] = [[UIImageView alloc] init]; //Problem Here: "Expression is not assignable"
}

//some code setting up the columns and beats shown below

for (int i = 0; i < 16; i++) {
    [[[circleArray objectAtIndex:i] imageView] setFrame:CGRectMake([[circleArray objectAtIndex:i] column]*80-75, [[circleArray objectAtIndex:i] beat]*80+5, 70, 70)];

    [self.view addSubview:[[circleArray objectAtIndex:i] imageView]];

    if ([[circleArray objectAtIndex:i] beatMod] == 0) {
        [[[circleArray objectAtIndex:i] imageView] setImage:redCircle];
    }
    else if ([[circleArray objectAtIndex:i] beatMod] == 0.5) {
        [[[circleArray objectAtIndex:i] imageView] setImage:blueCircle];
    }
    else if ([[circleArray objectAtIndex:i] beatMod] == 0.25 || [[circleArray objectAtIndex:i] beatMod] == 0.75) {
        [[[circleArray objectAtIndex:i] imageView] setImage:yellowCircle];
    }
    else {
        [[[circleArray objectAtIndex:i] imageView] setImage:greenCircle];
    }
}

エラーのある行を削除すると、画面に何も表示されません。UIImageViewを割り当てて初期化して表示する必要がありますか、それともNSObjectを割り当てて初期化するときにすでに実行されていますか?これを修正するにはどうすればよいですか?

4

1 に答える 1

0
  1. initforループの最初の行にあるCircleオブジェクトを作成する必要はありませんか?

  2. 構文は私には少し奇妙です。問題を引き起こしている行、そのLHSはオブジェクトを返しています。何かに設定するべきではありません。あなたはおそらく次のようなキャストを使用する必要があります

    ((Circle *)[circleArray objectAtIndex:i]).imageView = [[UIImageView alloc] init];

  3. Circleアレイに追加する前にを設定することをお勧めします。これだけ

    Circle *c = [[Circle alloc] init];

    c.imageView = blablabla;

    [array addObject:c];

またはそのようなもの。

(うーん..ブロックコードが機能しない理由がわかりません..)

于 2012-08-03T21:58:08.377 に答える