1

時計アプリのようにカウントダウンタイマーを使用して、ユーザーが開始したい時間を入力できるカウントダウンタイマーがあります。問題は、タイマーを実際にカウントダウンさせる方法がわからないことです。updateTimer私はすでに UI を作成しており、ほとんどのコードを持っていますが、私が持っているメソッドに何が入るかはわかりません。これが私のコードです:

- (void)updateTimer
{
    //I don't know what goes here to make the timer decrease...
}

- (IBAction)btnStartPressed:(id)sender {
    pkrTime.hidden = YES; //this is the timer picker
    btnStart.hidden = YES;
    btnStop.hidden = NO;
    // Create the timer that fires every 60 sec    
    stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                      target:self
                                                    selector:@selector(updateTimer)
                                                    userInfo:nil
                                                     repeats:YES];
}

- (IBAction)btnStopPressed:(id)sender {
    pkrTime.hidden = NO;
    btnStart.hidden = NO;
    btnStop.hidden = YES;
}

updateTimerタイマーを減らす方法を教えてください。

前もって感謝します。

4

1 に答える 1

2

変数を使用して、全体の残り時間を追跡します。updateTimer メソッドは毎秒呼び出され、updateTimer メソッドが呼び出されるたびに残り時間変数を 1 (1 秒) 減らします。以下に例を示しましたが、updateTimer の名前を reduceTimeLeft に変更しました。

SomeClass.h

#import <UIKit/UIKit.h>

@interface SomeClass : NSObject {
    int timeLeft;
}

@property (nonatomic, strong) NSTimer *timer;

@end

SomeClass.m

#import "SomeClass.h"

@implementation SomeClass

- (IBAction)btnStartPressed:(id)sender {
    //Start countdown with 2 minutes on the clock.
    timeLeft = 120;

    pkrTime.hidden = YES;
    btnStart.hidden = YES;
    btnStop.hidden = NO;

    //Fire this timer every second.
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                      target:self
                                                selector:@selector(reduceTimeLeft:)
                                                    userInfo:nil
                                                     repeats:YES];
}

- (void)reduceTimeLeft:(NSTimer *)timer {
    //Countown timeleft by a second each time this function is called
    timeLeft--;
    //When timer ends stop timer, and hide stop buttons
    if (timeLeft == 0) {
        pkrTime.hidden = NO;
        btnStart.hidden = NO;
        btnStop.hidden = YES;

        [self.timer invalidate];
    }
    NSLog(@"Time Left In Seconds: %i",timeLeft);
}

- (IBAction)btnStopPressed:(id)sender {
    //Manually stop timer
    pkrTime.hidden = NO;
    btnStart.hidden = NO;
    btnStop.hidden = YES;

    [self.timer invalidate];
}

@end
于 2012-12-29T01:47:53.643 に答える