2012-01-19 17 views
2

我爲我的日期創建了自定義類,需要通過按鈕向前和向後移動日期。這裏是我的代碼顯示今天日期:iOS:動態前進NSDate按鈕

- (NSString *) showToday { 

    NSCalendar *myCal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];  
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

    [dateFormatter setCalendar:myCal]; 

    offsetComponents = [[NSDateComponents alloc] init]; 
//shows today 
    [offsetComponents setDay:0]; 

    NSDate *nextDate = [myCal dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0]; 

    [dateFormatter setDateFormat:@"d"]; 
    NSString *currDay = [dateFormatter stringFromDate:nextDate]; 

    [NSString stringWithFormat:@"%@",currDay]; 

    [myCal release]; 
    [dateFormatter release]; 
    return currDay; 
} 

在我的viewController:

customClass = [[customClass alloc]init]; 

    day.text = [cal showToday]; 

所以如果我需要前進的日期我只是改變這一行代碼:

//show tomorrow 
[offsetComponents setDay:1]; 

so我該如何動態改變這一行,並通過按鈕更改日期?

回答

3

可以爲聲明intoffsetComponents變量。然後:

- (IBAction)moveDatesForward:(id)sender { 

    NSCalendar *persCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSPersianCalendar];  
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    NSLocale *IRLocal = [[NSLocale alloc] initWithLocaleIdentifier:@"fa_IR"]; 
    [dateFormatter setLocale:IRLocal]; 
    [dateFormatter setCalendar:persCalendar]; 

    offsetComponents = [[NSDateComponents alloc] init]; 

    offsetComponents.day = _dayNumber; 

    NSDate *nextDate = [persCalendar dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0]; 

    [dateFormatter setDateFormat:@"d"]; 
    dayLabel.text = [dateFormatter stringFromDate:nextDate]; 

    [NSString stringWithFormat:@"%@",dayLabel]; 

    [persCalendar release]; 
    [dateFormatter release]; 

     _dayNumber ++; 

} 
+0

謝謝DONE .... –

1

如何做這樣的事情:

(採用弧形 - 不要抱怨內存泄漏。)

- (void) refreshDateLabel 
{ 
    NSDateFormatter* dateFormatter = [NSDateFormatter new]; 
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

    self.dateLabel.text = [dateFormatter stringFromDate: self.date]; 
} 

- (IBAction)forward:(id)sender 
{ 
    self.date = [self.date dateByAddingTimeInterval: 24 * 60 * 60]; 
    [self refreshDateLabel]; 
} 

- (IBAction)back:(id)sender 
{ 
    self.date = [self.date dateByAddingTimeInterval: -(24 * 60 * 60)]; 
    [self refreshDateLabel]; 
} 

完整的項目在https://github.com/st3fan/StackOverflowAnswers/blob/master/DateSelection

+0

謝謝我使用自定義的類來創建日期,我不能改變我的代碼,以別的......請你根據我的代碼修改你的答案?謝謝 –

+0

我編輯了我的整個問題 –