J'ai le code suivant dans mon application. C'est une application iPad, avec cinq tables dans une seule vue nommée monTable, tueTable etc. Ces tables représentent du lundi au vendredi.NSDate/NSCalendar Problème
Dans ce code, je reçois la date et place chaque titre de table à la date du lundi au vendredi (cette semaine). Ensuite, si j'appuie sur un bouton, nextWeek devient TRUE et je recharge les données de la table. Cela signifie alors que la semaine est augmentée. Voir?
-(IBAction)nextWeekDown{
nextWeek = TRUE;
[monTable reloadData];
}
- (NSString*) tableView:(UITableView *)tableView titleForHeaderInSection:(int)section{
curDate = [NSDate date]; // Get current date
calendar = [NSCalendar currentCalendar];// Init calendar
comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate]; // Get necessary date components
// Week days change from 1 to 7, Sunday is the 1st, Saturday - the last one.
if (tableView == monTable){
if(nextWeek == TRUE){
[comps setHour:168];
NSDate *date = [calendar dateByAddingComponents:comps toDate:curDate options:0];
}
else{
[comps setWeekday:2];
}
}
if (tableView == tueTable){
if(nextWeek == TRUE){
[comps setHour:168];
NSDate *date = [calendar dateByAddingComponents:comps toDate:curDate options:0];
}
else{
[comps setWeekday:3];
}
}
if (tableView == wedTable){
if(nextWeek == TRUE){
[comps setHour:168];
NSDate *date = [calendar dateByAddingComponents:comps toDate:curDate options:0];
}
else{
[comps setWeekday:4];
}
}
if (tableView == thuTable){
if(nextWeek == TRUE){
[comps setHour:168];
NSDate *date = [calendar dateByAddingComponents:comps toDate:curDate options:0];
}
else{
[comps setWeekday:5];
}
}
if (tableView == friTable){
if(nextWeek == TRUE){
[comps setHour:168];
NSDate *date = [calendar dateByAddingComponents:comps toDate:curDate options:0];
}
else{
[comps setWeekday:6];
}
}
NSDate *tDate = [calendar dateFromComponents:comps];
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"EEE, MMM d"];
return [formatter stringFromDate:tDate];
}
Mon problème est que, pour une raison ou filaire, il augmente seulement lundi de sept jours à la semaine prochaine et aucun des autres jours sont modifiés lorsque le bouton est pressé des idées? Merci.
Vous êtes allé m'a fait paraître stupide maintenant ... :) Je jure de ne jamais poser une question comme celle-ci tard dans la nuit quand je suis à moitié réveillé jamais. Je suppose que c'est aussi une partie de l'apprentissage pour être efficace en relisant mon propre code, j'y arriverai un jour. –
Juste un suivi à cette question. Je l'ai pour que lorsque le bouton est pressé, nextWeek est VRAI, ce qui signifie bien sûr que les tables sont rechargées sept jours à l'avance. Mais pour ma vie, je ne peux pas passer à NextWeek = FALSE et être capable d'appuyer à nouveau sur le bouton. –
Ne vous inquiétez pas réparé! Cependant un autre problème! Quand j'appuie sur le bouton de la semaine prochaine, il continue à traverser les semaines, mais quand il atteint la fin de septembre, il remonte à août. –