2010-08-23 2 views
0

У меня есть следующий код в моем приложении. Его приложение для iPad с пятью таблицами в одном представлении с именем monTable, tueTable и т. Д. Эти таблицы представляют собой понедельник до пятницы.NSDate/NSCalendar Issue

В этом коде я получаю дату и устанавливаю каждое название таблицы на дату понедельника по пятницу (на этой неделе). Затем, если я нажимаю кнопку nextWeek, становится TRUE, и я перезагружаю данные таблицы. Это означает, что неделя увеличивается. Видеть?

-(IBAction)nextWeekDown{ 
    nextWeek = TRUE; 
    [monTable reloadData]; 
} 

- (NSString*) tableView:(UITableView *)tableView titleForHeaderInSection:(int)section{ 

    curDate = [NSDate date]; // Get current date 
    calendar = [NSCalendar currentCalendar];// Init calendar 
    comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate]; // Get necessary date components 

    // Week days change from 1 to 7, Sunday is the 1st, Saturday - the last one. 
    if (tableView == monTable){ 
     if(nextWeek == TRUE){ 
      [comps setHour:168]; 
      NSDate *date = [calendar dateByAddingComponents:comps toDate:curDate options:0]; 
     } 
     else{ 
      [comps setWeekday:2]; 
     } 
    } 
    if (tableView == tueTable){ 
     if(nextWeek == TRUE){ 
      [comps setHour:168]; 
      NSDate *date = [calendar dateByAddingComponents:comps toDate:curDate options:0]; 
     } 
     else{ 
      [comps setWeekday:3]; 
     } 
    } 
    if (tableView == wedTable){ 
     if(nextWeek == TRUE){ 
      [comps setHour:168]; 
      NSDate *date = [calendar dateByAddingComponents:comps toDate:curDate options:0]; 
     } 
     else{ 
      [comps setWeekday:4]; 
     } 
    } 
    if (tableView == thuTable){ 
     if(nextWeek == TRUE){ 
      [comps setHour:168]; 
      NSDate *date = [calendar dateByAddingComponents:comps toDate:curDate options:0]; 
     } 
     else{ 
      [comps setWeekday:5]; 
     } 
    } 
    if (tableView == friTable){ 
     if(nextWeek == TRUE){ 
      [comps setHour:168]; 
      NSDate *date = [calendar dateByAddingComponents:comps toDate:curDate options:0]; 
     } 
     else{ 
      [comps setWeekday:6]; 
     } 
    } 

    NSDate *tDate = [calendar dateFromComponents:comps]; 
    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [formatter setDateFormat:@"EEE, MMM d"]; 

    return [formatter stringFromDate:tDate]; 
} 

Моя проблема заключается в том, что по какой-то причине проводного это только увеличивает понедельник семь дней до следующей недели, и ни один из других дней изменяется при нажатии кнопки каких-нибудь идей? Благодарю.

ответ

0

В методе nextWeekDown вы перезагружаете только monTable - поэтому, естественно, другие таблицы не перезагружаются. Вам также нужно перезагрузить все остальные столы ...

+0

Вы пошли заставлять меня выглядеть глупо сейчас ... :) Я клянусь никогда не задавать такой вопрос, как это поздно ночью, когда я получу пробуждение снова. Угадайте, что его часть обучения будет эффективной при чтении моего собственного кода, я приеду туда однажды. –

+0

Просто ответьте на этот вопрос. У меня это так, что при нажатии кнопки nextWeek имеет значение ИСТИНА, то есть, конечно, таблицы перезагружаются на семь дней вперед. Но для моей жизни я не могу получить nextWeek = FALSE и снова нажать кнопку. –

+0

Не беспокойтесь, это исправлено! Однако еще одна проблема! Когда я нажимаю кнопку на следующей неделе, она продолжает проходить через недели, но когда она доходит до конца сентября, она возвращается к августу. –