-2

特定の期間(15分や15:00など)を指定できるようにアプリでカウントダウンタイマーを作成し、アクションで開始したいと思います。

また、そのカウントダウンタイマーが、外部Webサービスから経過時間と合計時間の情報を取得し、残りの時間のカウントダウンを開始する必要があります。

これは実際には、ユーザーに一連の質問が表示され、タイマーが質問画面に配置されるクイズアプリケーション用です(1つの質問だけでなく、クイズ全体に対して)。ユーザーはクイズの期間を設定でき、ユーザーがクイズの受験を開始するとすぐにカウントダウンタイマーが開始されます。ユーザーがテストを一時停止できる一時停止機能もあり、経過時間と合計時間の情報がWebサービスに登録されます。ユーザーは、一時停止した時点からカウントダウンタイマーを開始して、いつでもクイズを再開できます(つまり、この情報をWebサービスから取得します)。

前もって感謝します。

PS:正直なところ、私はそれをどうやってやるのか分かりませんでした。Webサービスにどの形式で時間が保存されるか、NSTimerがループで実行された後にプログラムが進むかどうかなど、他の多くのことについて混乱が多すぎました。つまり、私が何を意味するかはご存知でしょう。はい、NSTimerは、Alexが言ったように問題を解決し、サンプルコードも提供しました。

4

2 に答える 2

3

NSTimerのドキュメントをご覧ください。

通常、次のように、毎秒メソッドを呼び出すNSTimerを作成します。

NSTimer *theTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tick) userInfo:nil repeats:YES];

次に、ティックで、残り時間を保持している変数をデクリメントし、ディスプレイのラベルを更新します。

また、実用的なサンプルコードが必要な場合は、GitHubの小さなカウントダウンアプリを確認してください。

于 2012-07-10T18:34:52.997 に答える
0

これらのコードを試してみてください。すでにアプリに実装しています。OTPタイプの機能を再送信するのに最適です。

int secondsLeft;
int hours, minutes, seconds;

secondsLeft = 60;
[self countdownTimer];

-(void)countdownTimer {
//    secondsLeft = hours = minutes = seconds = 0;
timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateCounter:) userInfo:nil repeats:YES];

}

- (void)updateCounter:(NSTimer *)theTimer {
if(secondsLeft > 0 ) {
    secondsLeft -- ;
    hours = secondsLeft / 3600;
    minutes = (secondsLeft % 3600) / 60;
    seconds = (secondsLeft %3600) % 60;
    labelSeconds.text = [NSString stringWithFormat:@"%02d seconds left.",seconds];
} else {

    [timer invalidate];
    return;
}

}

于 2016-10-06T07:21:38.553 に答える