0

我尝试使用自定义 UITableViewCell 在我的 iOS 应用程序中的 UITableView 中显示结果。如果我使用单元格的 textLabel 和 detailTextLabel 属性,我可以查看我的数组的内容,但是如果我尝试将 UITableView 与自定义单元格类链接以显示数组的内容,我只能从接口获取默认值生成器显示在我的表中。

这是我拥有的相关代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    
    CustomTableCell *cell = (CustomTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[CustomTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        
    }
    
    // Configure the cell...
    
    
    TransactionList *tList = [_list objectAtIndex:indexPath.row];
/*    
    cell.transaction.text = tList.transaction;
    cell.type.text = tList.type;
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"ddMMYYYY"];
    
    NSString *dateAsString = [formatter stringFromDate:tList.date];
    cell.date.text = dateAsString;

  */

//this code below displays the contents just fine, but the block of code above does not.    

    cell.textLabel.text = tList.transaction;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@, %@", tList.type, tList.status];
    
    return cell;
}

下面的方法是我的 CustomTableCell 类中的方法:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
        
        self.selectionStyle = UITableViewCellSelectionStyleNone;
        
        self.contentView.frame = CGRectMake(0, 0, 320, 80);
        
        _transaction = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 80, 40)];
        [_transaction setBackgroundColor:[UIColor clearColor]];
        [_transaction setFont:[UIFont systemFontOfSize:12]];
        [_transaction setNumberOfLines:2];
        [_transaction setLineBreakMode:NO];
        [self.contentView addSubview:_transaction];
        
        _date = [[UILabel alloc] initWithFrame:CGRectMake(100, 5, 80, 40)];
        [_date setBackgroundColor:[UIColor clearColor]];
        [_date setFont:[UIFont systemFontOfSize:12]];
        [_date setNumberOfLines:2];
        [_date setLineBreakMode:NO];
        [self.contentView addSubview:_date];
        
        _type = [[UILabel alloc] initWithFrame:CGRectMake(200, 5, 80, 40)];
        [_type setBackgroundColor:[UIColor clearColor]];
        [_type setFont:[UIFont systemFontOfSize:12]];
        [_type setNumberOfLines:2];
        [_type setLineBreakMode:NO];
        _type.lineBreakMode = NO;
        [self.contentView addSubview:_type];
        
        
    }
    return self;
}

其中 _transaction、_date 和 _type 是标签。这是我在 MainStoryboard 中的 Interface Builder 的屏幕截图:

在此处输入图像描述

我尝试将样式从“基本”更改为“自定义”,再更改为“字幕”,但这无济于事。它只显示表格的默认值,并且这些设置会改变它们的显示方式,但我的 Array 的内容绝不会显示在表格中。谁能看到我做错了什么?我真的认为问题很简单,但不幸的是我无法解决这个问题。

提前感谢所有回复的人。

4

1 回答 1

0

您没有在主视图单元格中显示 3 个对象。将“样式”从基本更改为自定义并放入您的对象。

在“身份检查器”中,确保将类重命名为“CustomTableCell”。

视图(事务、日期和类型)是否在 CustomTableCell.h 中有属性,它们是否连接到 IB 中的“CustomTableCell”?

这是一张图片来指出最后两个:

在此处输入图像描述

于 2013-07-19T19:55:05.013 回答