Generer des dates afin d'afficher une vue calendaire
sheb
Membre
Bonjour a tous,
Ayant récemment terminé "Cocoa programming for mac os x", j'ai l'intention de me coder une petite appli pour me faire la main.
La première étape ne devrait pas etre tres compliquée, afficher une vue calendaire, de janvier à decembre.
Comment feriez-vous pour generer ces 365 jours (et des brouettes) à partir d'une année de départ ?
J'ai bien regardé NSDate, NSCalendar, NSCalendarDate et consors, mais je n'ai rien trouvé de tres pertinent.
Ayant récemment terminé "Cocoa programming for mac os x", j'ai l'intention de me coder une petite appli pour me faire la main.
La première étape ne devrait pas etre tres compliquée, afficher une vue calendaire, de janvier à decembre.
Comment feriez-vous pour generer ces 365 jours (et des brouettes) à partir d'une année de départ ?
J'ai bien regardé NSDate, NSCalendar, NSCalendarDate et consors, mais je n'ai rien trouvé de tres pertinent.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je n'ai pas tout compris, mais je pense en effet que NSCalendarDate est ton ami.
Tu dois donc partir du 1/1/2009 (par exemple), donc un NSCalendarDate initialisé par un initWithYear:2009 month:1 day:1 hour:0 minute:0 second:0 timeZone:[NSTimeZone localTimeZone] pour commancer.
Ensuite, pour chaque journée, tu peux récupérer le jour (méthode dayOfMonth), le mois (monthOfYear), le jour de la semaine (dayOfWeek), etc...
Enfin, il faut passer à la journée suivante par un dateByAddingYears:months:days:hours:minutes:seconds: en y ajoutant 1 journée, et ceci jusqu'à changer d'année.
Je veux me créer une custom view qui m'affiche un calendrier, le même type de vue que dans iCal quand tu mets l'affichage en "Mois"
Oui c'est bien ca.
- Donc moi je créerais une Custom View représentant une case d'un jour (disons MonthDayView), avec entre autres un constructeur de commodité du genre [tt]+(MonthDayView*)monthDayViewWithDate:(NSCalendarDate*)date[/tt], pour pouvoir créer facilement une "case" pour un jour donné.
- Ensuite, pour créer la vue du mois complet, il suffit de créer une autre customView "MonthView", avec un constructeur de commodité du genre [tt]+(MonthView*)monthViewWithMonth:(int)month andYear:(int)year[/tt], qui se chargerait de construire une NSCalendarDate avec l'année et le mois fourni (et le quantième du jour à 1, les heures à zéro), puis de boucler en créant une MonthDayView pour cette NSCalendarDate, le positionnant (en tant que subview de ta MonthView) au bon endroit automatiquement, puis ajoute un jour à la NSCalendarDate, et continue à boucler jusqu'à ce que le mois de la NSCalendarDate ait changé.
Voilà c'est qu'une façon de faire parmi d'autres, mais ça confirme que le plus simple est de passer par des NSCalendarDate puisqu'on peut alors en plus facilement incrémenter d'un jour en un jour, et tester que le mois a changé ou pas.