2012-01-28 3 views
2

캘린더 앱을위한 맞춤 캘린더를 만들었지 만, 도와 주시면 감사하겠습니다.이 코드는 하루 만에 표시됩니다. 나는, 그래서이 수에 사용자 탭 내 날짜가 숫자에 따라 변경해야하는 경우,사용자 정의 캘린더 테이블을 만들 때 약간의 문제가 발생했습니다.

달의 일을 표시 한 달 동안 사용자 정의 테이블을 만들어 24

- (NSString *) showPersianDay { 

    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"]; 
    NSString *currDay = [dateFormatter stringFromDate:nextDate]; 

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

    [persCalendar release]; 
    [dateFormatter release]; 

    return currDay; 
} 

예를 들어 하루에 2, 4, 13 ,

enter image description here

예를 들어 오늘 1월 4일입니다 - 사용자 탭 1월 6일 내 날짜가 1월 6일

로 변경해야 할 때 내가 좋아하는 어떤 방법을 사용할 필요가 없습니다 : day.text = @"6" 또는 뭔가 .. .. 나는 없다. d는 실제 날짜를 반환합니다. 특정 날짜를 표시하도록 코드를 수정하려면 어떻게해야합니까? 감사합니다.

+1

탭이 발생할 때 어떻게 알림을 받습니까? – Allen

답변

1

아마도 클래스를 여러 키가있는 NSDictionary로 반환해야합니다. 하나의 키에는 요일에 대한 문자열 값을 포함 할 수 있으며 다른 키에는 날짜 객체를 포함 할 수 있습니다.

- (NSDictionary *) showPersianDay { 

    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"]; 
    NSString *currDay = [dateFormatter stringFromDate:nextDate]; 

    [NSString stringWithFormat:@"%@",currDay]; 
    NSDictionary *results = [NSDictionary dictionaryWithObjectsAndKeys:currDay,@"dateString",nextDate,@"DateObj" nil]; 

    return results; 
} 

그런 다음 다른 측면에서 당신은 날짜 열을 표시 할 수 있습니다 및 달력 셀에 DateObj을 캐시합니다. 바라기를 이것은 당신의 질문을 해결합니다.

+0

질문에 답변 한 경우 표시하십시오. 감사 :) – MobileOverlord

관련 문제