我有一个内置了下载管理器的应用。下载文件后,它将保存到文档文件夹内的文件夹中。现在我在表格视图单元格中实现了时间和日期戳。但是,从一个视图控制器切换回我的表视图时,时间和日期将更新为当前时间。
以下是我正在使用的代码,一如既往,我们将不胜感激。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; } //did the subtitle style
NSUInteger row = [indexPath row];
cell.textLabel.text = [directoryContents objectAtIndex:row];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, MMM/d/yyyy, hh:mm aaa"];
NSDate *date = nil;
if (indexPath.row == 0)
{
date = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:date];
cell.detailTextLabel.text = dateString;
}
return cell;
}
答案 0 :(得分:2)
tableView:cellForRowAtIndexPath:
,因此时间将更新为当前时间,因为将再次调用[NSDate date]
。
不是计算tableView:cellForRowAtIndexPath:
中的日期,而是将其存储在别处(例如在类级别NSMutableArray
中),并在文件完成下载时设置它。这样,每次加载表时都不会重置它。
答案 1 :(得分:0)
决定回到此处。我最终弄明白了(不是说我一直都在努力)。
无论如何,我做了什么:
//Setting the date
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"my folder"];
filePath = [filePath stringByAppendingPathComponent:fileName];
NSDate *creationDate = nil;
NSDictionary *attributes = [fileManager attributesOfItemAtPath:filePath error:nil];
creationDate = attributes[NSFileCreationDate];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM-dd-yyyy"];
NSString *dateString = [dateFormatter stringFromDate:creationDate];
cell.detailTextLabel.text = dateString;
希望它对某人有帮助。