0

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

下面是我正在使用的代码,我们将一如既往地为您提供帮助。

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

2 回答 2

2

tableView:cellForRowAtIndexPath:每次重新加载表时都会调用,因此时间将更新为当前时间,因为[NSDate date]将再次调用。

而不是计算日期,tableView:cellForRowAtIndexPath:您应该将其存储在其他地方(例如类级别NSMutableArray)并在文件完成下载时设置它。这样每次表格加载时它都不会被重置。

于 2013-07-12T04:44:55.047 回答
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;

希望它可以帮助某人。

于 2014-11-11T23:30:32.690 回答