我正在创建一个应用程序,需要将一年中的所有日期都放入uitableview(每个日期都有自己的单元格)。有没有办法使用nsdate来填充每个日期的每个单元格?
答案 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 ...
}