0

当我的 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 {

}

解决此问题的最佳方法是什么?

4

1 回答 1

0

我会将所有日历和日期组件代码重构为一个方法,该方法将 NSDate(开始日期)和 &startWeekString 和 &endWeekString 作为参数,并填充后两个值。在变量中跟踪当前周(或当前使用的开始日期),并在 nextWeek 内,将该变量增加一周,并将其传递给您的日历方法。

于 2011-12-30T03:56:31.993 回答