Как не выпустить представление в Xcode - PullRequest
0 голосов
/ 13 февраля 2012

Здравствуйте. У меня есть вид секундомера, и когда пользователь нажимает кнопку «Назад», чтобы перейти к другому виду, секундомер останавливается. У меня были люди, которые говорили мне, что это потому, что оно выпущено.

Я хочу, чтобы секундомер продолжал работать.

Так как мне разблокировать или не разрешить выпуск?

Вот мой код.

.h

UILabel *stopWatchLabel;

NSTimer *stopWatchTimer; // Store the timer that fires after a certain time
NSDate *startDate; // Stores the date of the click on the start button

@property (nonatomic, retain) IBOutlet UILabel *stopWatchLabel;

- (IBAction)onStartPressed:(id)sender;
- (IBAction)onStopPressed:(id)sender;

.m

- (void)viewDidUnload
{
[self setStopWatchLabel:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}


- (void)updateTimer
{
NSDate *currentDate = [NSDate date];
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm:ss.SSS"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
NSString *timeString=[dateFormatter stringFromDate:timerDate];
stopWatchLabel.text = timeString;
}

- (IBAction)onStartPressed:(id)sender {
startDate = [NSDate date];

// Create the stop watch timer that fires every 10 ms
stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/10.0
                                                  target:self
                                                selector:@selector(updateTimer)
                                                userInfo:nil
                                                 repeats:YES];
}

- (IBAction)onStopPressed:(id)sender {
[stopWatchTimer invalidate];
stopWatchTimer = nil;
[self updateTimer]; 
}

1 Ответ

0 голосов
/ 19 апреля 2012

Я бы попробовал другой подход, чем изменение поведения контроллера представления:

Вы можете сделать таймер независимым от контроллера представления, переместив функциональность таймера в отдельный объект.Таким образом, объект таймера имеет иной жизненный цикл, чем объект контроллера представления.Например, вы можете создать (и освободить) объект таймера в делегате приложения, создать ссылку на него и получить к нему доступ в вашем контроллере представления.

...