некоторые проблемы с созданием пользовательских таблиц календаря iOS - PullRequest
2 голосов
/ 28 января 2012

Я создал собственный календарь для своего приложения календаря ... но у меня есть проблема, которую я был бы признателен, если бы вы помогли мне сделать это, этот код показывает один день. например, день 2, 4, 13, 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;
}

Я создал пользовательскую таблицу для месяца, которая показывает дни месяца, поэтому, когда пользователь нажимает на это число, моя дата должна меняться в соответствии с числами,

enter image description here

например сегодня 4 января - когда пользователь нажмет 6 января, моя дата должна измениться на 6 января.

Мне не нужно использовать что-то вроде: day.text = @"6" или что-то .... Мне нужно вернуть реальную ДАТУ, Как я могу изменить свой код, чтобы показать определенный день? благодарю вас.

1 Ответ

1 голос
/ 03 февраля 2012

Возможно, вам нужно, чтобы класс возвращал 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;
}

Затем на другой стороне вы можете отобразить dateString и кэшировать DateObj в ячейке календаря.Надеюсь, это решит ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...