2009-10-06 8 views
10

私はビューにuilabelとuisliderを持っています。私はスライダを使ってラベルの時間を設定したい。スライダの範囲は00:00:00から03:00:00までである。スライダーの3時間とインターバルは0.5分です。また、show.iの方法は、アプリケーションが閉じてもタイマーが動くようにします。iphoneでuilabelのカウントダウンを表示するには?

答えて

40

まず、アプリを終了した後にタイマーを起動させる方法はありません。バックグラウンドアプリはiPhone上では許可されていません。タイマーでそれを偽造する方法があります(アプリが終了するとタイムスタンプを保存し、バックアップが開始されたときにチェックします)が、アプリが起動する前にタイマーがなくなった場合は処理されませんアップ。

UILabelをカウントダウンで更新する場合、おそらくNSTimerが動作します。

timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES]; 

updateCountdown方法:

-(void) updateCountdown { 
    int hours, minutes, seconds; 

    secondsLeft--; 
    hours = secondsLeft/3600; 
    minutes = (secondsLeft % 3600)/60; 
    seconds = (secondsLeft %3600) % 60; 
    countDownlabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds]; 
} 

I

タイマーを作成します。このような何か、あなたはNSTimerタイマー、int型secondsLeft、そしてあなたのクラスでUILabel countdownLabelを持っていると仮定私のアプリケーションの1つで何か似たようなことをするが、今すぐ便利なコードはない。

+0

このリンクを参照してください。 –

+0

これは、タイマーを実行する秒数です。おそらく、UISliderの値に基づいて設定されます。 –

+0

shawnが言ったように、あなたはアプリが閉じられた後にタイマーを稼働させ続けることができないので、あなたのアプリがUIApplicationWillTerminateNotificationを送信したときの開始時間を記録しておくことを忘れないでください。アプリが実行されていないときに実行されるタイマーの唯一の回避策は、プッシュ通知を使用することです。しかし、それは高価になる可能性があります。 – pxl

2

このコードは間違っています。

timer = [NSTimer scheduledTimerWithInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES]; 

です。あなたのアプリケーションが行ったとき、あなたのタイマーの実行を継続することができます

timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES]; 
0

が背景に入った、

@shawnのcraverをuに語ったとして、あなたがこれを行うカントが、アプリケーションがバックグラウンドに入ったときに、あなたがこれを行うことができます(「ない終了」)これは別のイベントapplicationDidEnterBackground であり、それにマルチスレッド化GCD(グランドセントラルディスパッチ)が必要になります。

plaseはsecondsLeftの値が何であるかを

set a timer in ios

関連する問題