将所有日历日期插入到uitableview中。

时间:2011-08-21 20:41:44

标签: iphone objective-c ios4

我正在创建一个应用程序,需要将一年中的所有日期都放入uitableview(每个日期都有自己的单元格)。有没有办法使用nsdate来填充每个日期的每个单元格?

1 个答案:

答案 0 :(得分:0)

如果您需要显示1月1日至12月31日期间的所有日期,则需要手动创建NSDate个实例。

以下方法可能有助于NSDate单元格所需的UITableView个实例:

- (NSInteger)daysInYear:(NSInteger)year {
    if (year % 400 == 0)        return 366;
    else if (year % 100 == 0)   return 365;
    else if (year % 4 == 0)     return 366;
    else                        return 365;
}


- (NSDate *)firstDayInYear:(NSInteger)year {
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    [fmt setDateFormat:@"MM/dd/yyyy"];
    NSDate *firstDayInYear = [fmt dateFromString:[NSString stringWithFormat:@"01/01/%d", year]];
    [fmt release];
    return firstDayInYear;
}


- (NSDate *)dateWithDayInterval:(NSInteger)dayInterval sinceDate:(NSDate *)referenceDate {
    static NSInteger SECONDS_PER_DAY = 60 * 60 * 24;
    return [NSDate dateWithTimeInterval:dayInterval * SECONDS_PER_DAY sinceDate:referenceDate];
}

在tableView:cellForRowAtIndexPath:方法中,您可以实例化相应的NSDate实例:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSDate *dateForCell = [self dateWithDayInterval:indexPath.row sinceDate:self.firstDayInYear];
    // ... rest of your method ...
}