У меня есть следующий код в моем приложении. Его приложение для 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];
}
Моя проблема заключается в том, что по какой-то причине проводного это только увеличивает понедельник семь дней до следующей недели, и ни один из других дней изменяется при нажатии кнопки каких-нибудь идей? Благодарю.
Вы пошли заставлять меня выглядеть глупо сейчас ... :) Я клянусь никогда не задавать такой вопрос, как это поздно ночью, когда я получу пробуждение снова. Угадайте, что его часть обучения будет эффективной при чтении моего собственного кода, я приеду туда однажды. –
Просто ответьте на этот вопрос. У меня это так, что при нажатии кнопки nextWeek имеет значение ИСТИНА, то есть, конечно, таблицы перезагружаются на семь дней вперед. Но для моей жизни я не могу получить nextWeek = FALSE и снова нажать кнопку. –
Не беспокойтесь, это исправлено! Однако еще одна проблема! Когда я нажимаю кнопку на следующей неделе, она продолжает проходить через недели, но когда она доходит до конца сентября, она возвращается к августу. –