-1

Xcode 4をシングルビューアプリとして使用してストップウォッチを作成しています..でも質問がありました。ミリ秒がカウントされている場合、それらは無限に進みます。私はそれらが 9 に達してから 0 に戻りたいと思っています。また、秒が 59 に達してから 0 に戻りたいと思っています。これが私の viewcontroller.m ファイルのコードです:

- (IBAction)start{

    myTicker = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(showActivity) userInfo:nil repeats:YES];  


    myTicker2 = [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(showActivity1) userInfo:nil repeats:YES];

    myTicker3 = [NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(showActivity2) userInfo:nil repeats:YES];


}
- (IBAction)stop{

    [myTicker invalidate];
    [myTicker2 invalidate];
    [myTicker3 invalidate];
}
- (IBAction)reset{

    time.text = @"00";
    time1.text = @"00";
    time2.text = @"00";
}


- (void)showActivity{

    int currentTime = [time.text intValue];
    int newTime = currentTime + 1;
    time.text = [NSString stringWithFormat:@"%d", newTime];

    }



- (void)showActivity1{


    int currentTime1 = [time1.text intValue];
    int newTime1 = currentTime1 + 1;
    time1.text = [NSString stringWithFormat:@"%d", newTime1];


}


- (void)showActivity2{


    int currentTime2 = [time2.text intValue];
    int newTime2 = currentTime2 = 1;
    time2.text = [NSString stringWithFormat:@"%d", newTime2];



}

これが.hファイルの私のコードです。

    IBOutlet UILabel *time;
    IBOutlet UILabel *time1;
    IBOutlet UILabel *time2;

    NSTimer *myTicker;
    NSTimer *myTicker2;
    NSTimer *myTicker3;
}

- (IBAction)start;
- (IBAction)stop;
- (IBAction)reset;


- (void)showActivity;
- (void)showActivity1;
- (void)showActivity2;

@end

これを行う方法についての回答は大歓迎です。ありがとう。

4

1 に答える 1

0

あなたの場合、1 つのタイマー (ミリ秒をカウントする 1 つ) と 4 つの int 変数 (時間、分、秒、ミリ秒) のみを使用します。そして、タイマーティックでテストするだけです

if (milliseconds > 999)
{
    seconds++;
    milliseconds = 0;
}
if (seconds > 59)
{
    minutes++;
    seconds = 0;
}
if (minutes > 59)
{
    hours++;
    minutes = 0;
}

これにより、すべての変数を管理する 1 つのタイマーができます。このコードは急いで書いたので、スペルミスがあるかもしれません。

于 2012-07-08T14:07:58.167 に答える