简单的UIImageView幻灯片IOS计时器问题

时间:2013-04-28 16:59:15

标签: ios objective-c cocoa-touch

我试图创建一个简单的幻灯片,其中UIImageView的图像每三秒更改一次。首先,我在[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;
    }
}

编辑:Timer是一个实例变量

1 个答案:

答案 0 :(得分:5)

使用此实现 -

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

因为使用timerWithTimeInterval参数,您应该手动将计时器添加到 NSRunLoop 中,如下所示:

[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];