如何在UITableViewCellStyleSubtitle中显示多行

时间:2014-11-11 23:40:50

标签: ios tableview cell

所以我的应用程序中有一个下载管理器。我今天已经把它活了起来。

我已经实现了UITableViewCellStyleSubtitle,并且显示正常。

我想为它添加多行。现在,我一直在选择文件大小或格式化日期。

我怎么做两个?即。

Cell Title
Date: (followed by file size) or
File Size:

以下是我正在使用的相关代码。

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        static NSString *CellIdentifier = @"Cell";
        UITableViewCell *cell = [(UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier] autorelease];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
            [cell setSelectionStyle:UITableViewCellSelectionStyleBlue];
        }

    // Configure the cell.
        cell.textLabel.text = [directoryContents objectAtIndex:indexPath.row];
        cell.accessoryType = UITableViewCellAccessoryNone;
        [cell.layer setBorderColor:[UIColor colorWithRed:30/255.0 green:30/255.0 blue:30/255.0 alpha:1.0].CGColor];
        [cell.layer setBorderWidth:1.5f];
        cell.textLabel.numberOfLines = 0;


    //Get file size
        NSError *error;
        NSString *fileName = [directoryContents objectAtIndex:indexPath.row];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"my folder"];
        path = [path stringByAppendingPathComponent:fileName];

        NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:&error];
        NSInteger fileSize = [[fileAttributes objectForKey:NSFileSize] intValue];

    //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];


/////This is where I need to blend the dateString with the file size//////
        cell.detailTextLabel.text = [NSString stringWithFormat:dateString, @"%@", [self formattedFileSize:fileSize]];
        cell.detailTextLabel.numberOfLines = 2;

        return cell;
    }

先谢谢你。

2 个答案:

答案 0 :(得分:1)

我尝试了这个,出于某种原因,将numberOfLines设置为2对我来说也不起作用,但将其设置为大于2的任何值,或将其设置为0都可以。

您需要正确格式化两个字符串。这不是正确的语法,

[NSString stringWithFormat:dateString, @"%@", [self formattedFileSize:fileSize]]

应该是这样的,

[NSString stringWithFormat:@"%@\n%@",  dateString, [self formattedFileSize:fileSize]];

答案 1 :(得分:0)

想出来了。只需要调整字符串的格式。

cell.detailTextLabel.text = [NSString stringWithFormat:@"%@\n%@", dateString, [self formattedFileSize:fileSize]];

在发布此答案时,页面刷新并看到rdelmar在更新的帖子中也显示正确的语法。

感谢并感谢他帮助我思考这个问题。