2011-05-23 9 views
12

Este es mi método que uso para aumentar un día en mi navigationBar, y establecer el nombre del día como un título. Sé que está mal porque configuro la variable "hoy" cada vez que se llama. Pero no puedo imaginar cómo aumentar +1 día cada vez que llamo a este método.Aumentar método NSDate +1 día Objective-C?

-(void)stepToNextDay:(id)sender 
{ 
    today = [NSDate date]; 
    NSDate *datePlusOneDay = [today dateByAddibgTimeInterval:(60 * 60 * 24)]; 
    NSDateFormatter *dateformatterBehaviour = [[[NSDateFormatter alloc]init]autorelease]; 
    [dateFormatter setDateFormat:@"EEEE"]; 
    NSString *dateString = [dateFormatter stringFromDate:datePlusOneDay]; 
    self.navigationItem.title = datestring; 
} 
+0

En el navigationbar tengo 2 botones que yo uso para navegar a través de días en la semana. Se llama a este método cuando quiero mostrar "next day". Por cada día que navego, solicito datos de un servicio web y llevo el tableviewCell. – Haris

Respuesta

30

Almacene la fecha que está mostrando en una propiedad (ivar, ...) de su controlador de vista. De esta forma puede recuperar la configuración actual cuando vaya al día siguiente.

Si desea agregar fechas de manera confiable, use NSCalendar y NSDateComponents para obtener una unidad de "1 día" y agréguela a la fecha actual.

NSCalendar*  calendar = [[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar] autorelease]; 
NSDateComponents* components = [[[NSDateComponents alloc] init] autorelease]; 
components.day = 1; 
NSDate* newDate = [calendar dateByAddingComponents: components toDate: self.date options: 0]; 
+1

Muy bien, ¿te importa demostrar en el código? si es posible – Haris

+4

Tienes suerte, me siento útil hoy :) –

+0

Jeje, gracias! – Haris

3

A partir de iOS 8 NSGregorianCalendar se depricated, la respuesta actualizada estará,

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 
NSDateComponents *components = [[NSDateComponents alloc] init]; 
components.day = 1; 
NSDate *newDate = [calendar dateByAddingComponents:components toDate:today options:0]; 

Código Swift:

var today:NSDate = NSDate() 
let calender:NSCalendar! = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) 
var components:NSDateComponents = NSDateComponents() 
components.setValue(1, forComponent: NSCalendarUnit.CalendarUnitDay) 
var newDate:NSDate! = calender.dateByAddingComponents(components, toDate:today, options: NSCalendarOptions(0)) 
Cuestiones relacionadas