ios TableViewCell自定义问题。不显示自定义文本

时间:2012-08-13 17:58:47

标签: ios uitableview

您好我需要自定义UITableViewCell。因此,我创建了一个自定义类和必要的UI(xib)来支持它。对于XIB,我选择了类作为我创建的派生类。我的问题是在将显示标签链接到属性之后,我在运行时设置值不会显示所需的文本。它的左边是空白的。以下是代码段。

@interface CustomCell : UITableViewCell
{
    IBOutlet UILabel *titleRow;
}

@property (nonatomic, strong) UILabel *titleRow;
@property (nonatomic, strong) UILabel *subTitleRow;
@property (nonatomic, strong) UILabel *otherTextRow;
@end

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MedVaultCell";
    CustomCell *cell = nil;
    cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Configure the cell...
    if (nil == cell){

        //Load custom cell from NIB file
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCellHistoryCell" owner:self options:NULL];
        cell = [nib objectAtIndex:0];

        //cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

        //cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    }   

    // get the object
    Weight *currentCellWeight = [_weights objectAtIndex:indexPath.row];

    // Configure the cell...
    UILabel *titleLable = [[UILabel alloc]init];
    titleLable.text = currentCellWeight.customDispText;
    [cell setTitleRow:titleLable];

    cell.titleRow.text = currentCellWeight.display;
    cell.titleRow.textColor = [UIColor redColor];
    //cell.textLabel.text = [[_weights objectAtIndex:indexPath.row] customDispText];
    //cell.textLabel.textColor = [UIColor whiteColor];


    return cell;
}

1 个答案:

答案 0 :(得分:0)

首先,我希望您的cellForRowAtIndexPath位于UITableView delegate,而不是您的自定义单元格类。

其次,问题在于:

// Configure the cell...
UILabel *titleLable = [[UILabel alloc]init];
titleLable.text = currentCellWeight.customDispText;
[cell setTitleRow:titleLable];

在此代码中,您将创建一个新标签并使用新标签覆盖您的IBOutlet标签。然后你没有显示新标签。而是将代码更改为:

// Configure the cell...
cell.titleRow.text = currentCellWeight.customDispText;

但是,您之后会将titleRow.text重置为currentCellWeight.display

所以你需要选择你想成为文本的那一个并将文本设置为该文本。您无需创建新标签(UILabel *titleLable = [[UILabel alloc] init];),因为您已在IB中创建了标签。