1

UIImageView の画像が 3 秒ごとに変化する単純なスライドショーを作成しようとしています。まず[self slideShow]、 を呼び出しますviewDidLoad。私が持っているタイマーは、何らかの理由で一度しか実行されず、理解できません。ここに私の他の方法があります:

- (void)slideShow
{
    timer = [NSTimer timerWithTimeInterval:3.0
                                        target:self
                                      selector:@selector(imChange)
                                      userInfo:nil
                                       repeats:YES];
    [timer fire];
}

- (void)imChange
{
    NSLog(@"%d",slideNum);
    switch (slideNum) {
        case 0:
            imView.image = img1;
        break;

        case 1:
             imView.image = img2;
        break;

    default:
        break;
}

    slideNum++;

    if (slideNum > 1) {
        slideNum = 0;
    }
}

編集:タイマーはインスタンス変数です

4

1 に答える 1

5

この実装を使用してください -

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:3.0
                                    target:self
                                  selector:@selector(imChange)
                                  userInfo:nil
                                   repeats:YES];

timerWithTimeInterval パラメータを使用すると、次のようにタイマーをNSRunLoopに手動で追加する必要があるためです。

[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
于 2013-04-28T17:26:34.833 に答える