当我的tableview加载时,它会根据我们当前所在的星期从mysql数据库中获取数据。这一切都运行正常,但我也希望用户能够点击下周加载数据的UIButton。之后,按钮会停留在那里,可以反复点击一下,直到接下来几周。
NSDate *date = [NSDate date];
NSCalendar *cal =[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
[cal setFirstWeekday:3]; //
NSDate *beginningOfWeek = nil;
[cal rangeOfUnit:NSWeekCalendarUnit startDate:&beginningOfWeek interval:nil forDate:date];
NSDateComponents *beginComponents = [cal components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit) fromDate:beginningOfWeek];
NSDateComponents *offset = [[NSDateComponents alloc]init];
[offset setDay:6];
[offset setHour:23];
NSDate *endOfWeek = [cal dateByAddingComponents:offset toDate:beginningOfWeek options:0];
NSDateComponents *endComponents = [cal components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit) fromDate:endOfWeek];
NSTimeInterval tiStart = [beginningOfWeek timeIntervalSince1970];
NSTimeInterval tiEnd = [endOfWeek timeIntervalSince1970];
NSString *startWeekString = [NSString stringWithFormat:@"%f", tiStart];
NSString *endWeekString = [NSString stringWithFormat:@"%f", tiEnd];
NSURL *url = [NSURL URLWithString:@"http://localhost/test.php"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:startWeekString forKey:@"startweek"];
[request setPostValue:endWeekString forKey:@"endweek"];
[request setDelegate:self];
[request startAsynchronous];
}
-(IBAction)nextWeek:(id)sender {
}
最好的方法是什么?
答案 0 :(得分:0)
我会将所有日历和日期组件代码重构为一个方法,该方法将NSDate(开始日期)和& startWeekString和& endWeekString作为参数,并填充后两个值。 跟踪变量中的当前周(或当前使用的开始日期),并在nextWeek内,将该变量增加一周,并将其传递给您的日历方法。