dans mon application J'ai un UIProgressView qui montre le temps écoulé entre deux NSDate. Tout fonctionne correctement, chaque minute qui passe UIProgressView avance de 0,1 par minute.Soustraire 1 minute entre deux NSDate
La différence entre les deux dates est calculé de cette manière avec un CGFloat
plus que j'ai un UIButton il devrait avoir la fonction de « diminuer la ProgressView 0,1 » en quelques mots à chaque fois que le bouton est enfoncé Je voudrais prendre une minute pour faire la différence entre les deux NSDate que j'ai créés précédemment. J'ai fait quelques tentatives mais je n'arrive pas à l'obtenir car quand mon application est fermée puis rouverte, le décalage horaire entre les deux dates ne change pas ... comment puis-je faire ça?
je vous montre le code que je utilise
-(void)viewDidLoad {
[super viewDidLoad];
[self startDate];
}
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self upgradeEnergyBar];
[NSTimer scheduledTimerWithTimeInterval: (1 * 60)
target:self
selector:@selector(upgradeEnergyBar)
userInfo:nil
repeats:YES];
}
-(void)startDate {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
if (! [defaults boolForKey:@"notFirstRun"]) {
NSDate *date = [NSDate new];
[[NSUserDefaults standardUserDefaults] setObject:date forKey:@"open"];
NSLog(@"Ora di apertura : %@", date);
[defaults setBool:YES forKey:@"notFirstRun"];
}
}
- (IBAction)sfAction:(id)sender {
//Decrement CGFLOAT
}
-(void)upgradeEnergyBar {
self.now = [NSDate new];
NSDate *lastDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"open"];
NSTimeInterval timeInterval = [self.now timeIntervalSinceDate:lastDate];
_minutes = timeInterval/60;
_energyBar.progress = _minutes * 0.1;
[self updateLabelEnergyWithProgress:_energyBar.progress];
_minute.text = [NSString stringWithFormat:@"MINUTES:%ld", (long) _minutes];
NSLog(@"MINUTES:%ld", (long) _minutes);
if (_energyBar.progress == 1) NSLog(@"end");
}
Fonctionne parfaitement ... Maintenant je cpaito mon erreur ... le problème est que je ne sauve pas ma peau à nouveau le nouveau NSUserDefault .. Je veux poser une question ... Le code fonctionne bien quand j'ouvre et ferme mon app maintenant les minutes changent ... mais pourquoi démarrer mon application de XCode ne pas le fermer par ipad les minutes ne changent pas? – kAiN
Vous .. pour la valeur négative I Fixé de cette manière if (bar.progress == 0) return; pouvez-vous me dire si et The Way pour éviter la valeur négative? – kAiN
J'ai édité ma réponse pour montrer une manière d'éviter le problème de temps négatif/futur. Je ne suis pas vraiment sûr de ce que votre autre question est si ... – DonMag