时间戳继续计数

时间:2013-07-12 04:02:18

标签: ios tableview tablecell

我有一个内置了下载管理器的应用。下载文件后,它将保存到文档文件夹内的文件夹中。现在我在表格视图单元格中实现了时间和日期戳。但是,从一个视图控制器切换回我的表视图时,时间和日期将更新为当前时间。

以下是我正在使用的代码,一如既往,我们将不胜感激。

- (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;
}

2 个答案:

答案 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;

希望它对某人有帮助。