iPhone Добавить таймер на панели навигации - PullRequest
0 голосов
/ 21 августа 2009

Привет, я сделал простое приложение с 5 контроллерами представления с некоторой функциональностью. Теперь я хочу добавить время на главном экране. и он должен работать до тех пор, пока я не выйду из приложения .. я также перейду на другие контроллеры представления, но этот таймер будет работать .. как я получу эту функцию ??

Ответы [ 2 ]

3 голосов
/ 21 августа 2009

Ознакомьтесь с разделом «Таймеры» здесь: http://www.iphoneexamples.com/

Также см. Документацию Apple NSTimer

.
0 голосов
/ 21 августа 2009

Наиболее практичный способ сделать это - подделать его, то есть просто сохранить начальную метку времени и не пытаться постоянно поддерживать какие-либо переменные timePassed. Это и проще для написания кода, и на самом деле более надежно, так как оно стабильно.

Сохраните NSDate для того момента, когда таймер был запущен, и всякий раз, когда вы хотите отобразить или обновить таймер, используйте метод NSDate timeIntervalSinceNow, который возвращает количество секунд передается как NSTimeInterval, что в основном является typedef для double. Примечание: эта функция возвращает отрицательное число при вызове на временной отметке в прошлом, что будет иметь место здесь.

Если часть вашего дисплея показывает это время, вы можете обновлять его каждую секунду (или даже чаще) с помощью объекта NSTimer, который периодически вызывает один из ваших методов, который обновляет дисплей.

Пример кода:

// In the initialization code:
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self
              selector:@selector(secondPassed:) userInfo:nil repeats:YES];

// Later:
// (This code assumes #minutes < 60.)
- (void) secondPassed: (NSTimer:) timer {
    NSTimeInterval secondsPassed = -1 * [self.timerStart timeIntervalSinceNow];
    int minutes = (int)(secondsPassed / 60);
    int seconds = (int)(seconds - minutes * 60);
    NSString* timerString = [NSString stringWithFormat:@"%02d:%02d",
                             minutes, seconds];
    [self updateTimerDisplay:timerString];
}
...