2015-07-03 37 views
0

我用UIDatePicker實行倒計時timer.After加載視圖datePickerMode集CountDownTimer後:如何繼續倒計時關閉的ViewController

- (void)viewDidLoad { 
[super viewDidLoad]; 
self.countDownTimer.datePickerMode=UIDatePickerModeCountDownTimer; 
} 

首先,設置倒計時時間UIDatePicker,然後按下按鈕啓動倒計時:

- (IBAction)StartCountdown:(id)sender { 
    [sender setTitle:@"Cancel" forState:UIControlStateNormal]; 
    countDownInterval = (NSTimeInterval)countDownTimer.countDownDuration; 
    remainder = countDownInterval; 
    afterRemainder = countDownInterval - remainder % 60 ; 
    //call updateCountDown() 
    timer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateCountDown) userInfo:nil repeats:YES]; 
} 

呼叫updateCountDown()

-(void)updateCountDown{ 
    afterRemainder --; 
    int hours = (int)(afterRemainder/(60*60)); 
    int mins = (int)(((int)afterRemainder/60)-(hours * 60)); 
    int secs = (int)(((int)afterRemainder - (60 * mins) - (60 * hours *60))); 
    NSString *displayText = [[NSString alloc]initWithFormat:@"%02u : %02u : %02u",hours,mins,secs]; 
    self.displayLabel.text = displayText; 
} 

動作可以正常執行,但是當我跳出這個視圖並且不會執行定時器爲零時,我該如何操作定時器可以在跳轉視圖後持續嗎?

+0

意味着你需要運行要去另一個觀點也經過? –

+1

我想你在應用程序委託中聲明方法,然後啓動計時器並訪問另一個視圖。 –

+0

我有一個'viewcontroller'命名'timeViewContorller',我在視圖設置'UIDatePicker'並設置'button'來啓動並取消它。 – CHUB

回答

1

我覺得你可以做的對象申報定時器:

  1. 當你跳出來看,讓我們在這個時候保存狀態NSUserDefaults的
    • 的保持時間,也許在幾秒鐘內
    • 當前系統時間在那個時候,考試:13點20分十五秒
  2. 當你再次打開該視圖:
    • 獲取當前系統時間,以節省系統時間(A)分吧
    • 用(A)保存的剩餘時間(以秒爲單位)並繼續倒計時。

只是一個想法,但希望它有助於

+0

如果你這樣做,那麼跳轉觀看計時器將停止,對吧? – CHUB

+0

是的,計時器只有當我們再次跳到跳線視圖時才起作用 –

+0

我希望即使在視野範圍內仍然可以用我的計時器 – CHUB

1
  1. 創建一個單獨的類並聲明你的計時器內爲它裏面的屬性最好的和乾淨的方式。因此整個應用程序中只有一個計時器對象實例。

  2. 另一種方式是在應用程序委託類亦持有整個應用

+0

對不起,我是一個初學者,你可以提供一些例子讓我學習它? – CHUB