我怎样才能使用nscalendar&按下按钮时nsdate?

时间:2011-12-29 22:03:14

标签: iphone objective-c ios nsdate nscalendar

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

}

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

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