0

コードを作成したので、ビューが読み込まれると、ランダムな画像が表示されます。私はいくつかのコードを書きましたが、常に同じ画像 (および viewbgcolor) で始まります。

私のコード:

-(void)viewDidLoad
{
    index = [NSNumber numberWithInt:(([index intValue] + 1) % 6)];
    switch ([index intValue]) {
        case 0:
            moodImage.image = [UIImage imageNamed:@"angry.png"];
            self.view.backgroundColor = [UIColor redColor];
            break;

        case 1:
            moodImage.image = [UIImage imageNamed:@"Disappointed.png"];
            self.view.backgroundColor = [UIColor brownColor];
            break;

        case 2:
            moodImage.image = [UIImage imageNamed:@"glad.png"];
            self.view.backgroundColor = [UIColor orangeColor];
            break;
        case 3:
            moodImage.image = [UIImage imageNamed:@"happy.png"];
            self.view.backgroundColor = [UIColor yellowColor];
            break;

        case 4:
            moodImage.image = [UIImage imageNamed:@"sad.png"];
            self.view.backgroundColor = [UIColor grayColor];
            break;

        case 5:
            moodImage.image = [UIImage imageNamed:@"surprised.png"];
            self.view.backgroundColor = [UIColor greenColor];
            break;
    }
}

これは本当にイライラします.. IBAction ではうまく機能しますが、viewdidload ではうまく機能しません...誰かがこれを機能させるための代替コードブロックを持っていますか?

4

2 に答える 2

2
index = [NSNumber numberWithInt:(([index intValue] + 1) % 6)];

このコード行にはランダムな値はありません。

これを試して:

index = [NSNumber numberWithInt:arc4random_uniform(5)];

Objective-Cでの乱数については、「Objective-C での乱数の生成」を参照してください。

于 2013-06-22T14:07:49.397 に答える
0

それ以外の

[NSNumber numberWithInt:(([index intValue] + 1) % 6)]

使用する

 arc4random(5)

viewDidCall ごとにランダムな値を形成する必要がありますが、コードからは発生しません。

arc4random()のドキュメント

于 2013-06-22T14:07:35.687 に答える