我试图通过在进入后台时将时间保存到磁盘并在进入前台时检索它来使我的计时器在后台“运行”。每个视图控制器都有一个计时器和一个用户指定的 timeInterval。问题是,我不知道如何访问 timeInterval 变量。我想我可以通过使用这样的东西来获得时间差异(这行得通吗?):
NSTimeInterval idleTime = [dateReturnedToForeground timeIntervalSinceDate:dateEnteredBackground];
NSTimeInterval elapsedTime = [[NSDate date] timeIntervalSinceDate:startDate];
elapsedTime -= idleTime;
每个视图控制器(和计时器/时间间隔)的访问方式如下:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
DetailViewController *detailVC;
if (![self.detailViewsDictionary.allKeys containsObject:indexPath]){
detailVC = [[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil];
[self.detailViewsDictionary setObject:detailVC forKey:indexPath];
detailVC.context = self.managedObjectContext;
}else{
detailVC = self.detailViewsDictionary[indexPath];
}
Tasks *task = [[self fetchedResultsController] objectAtIndexPath:indexPath];
detailVC.testTask = task;
[[self navigationController] pushViewController:detailVC animated:YES];
NSLog(@"%@", self.detailViewsDictionary);
[[NSNotificationCenter defaultCenter] addObserver:detailVC forKeyPath:self.detailViewsDictionary[indexPath] options:nil context:nil];
}
我将每个视图控制器添加到通知中心,以便可以在应用程序委托中访问它(我认为这是对的?)。问题是,我不知道如何将第一个代码与视图控制器代码结合起来,因为我无法在应用程序委托中访问视图控制器的属性。有什么建议可以让我的计时器在后台“运行”吗?