3
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell2";
    UILabel *titleLabel;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(5, 5, 300, 20)];
        [cell.contentView addSubview:titleLabel];
        titleLabel.tag = 0011;
    }
    else 
    {
        titleLabel = (UILabel *)[cell.contentView viewWithTag:0011];
    }

    // Configure the cell...
    NSMutableString *title = [NSMutableString stringWithString:@"Customer: "];
    [title appendString:[titles objectAtIndex:indexPath.row]];
    titleLabel.text = title.copy;
    titleLabel.backgroundColor = [UIColor clearColor];
    titleLabel.textAlignment = UITextAlignmentLeft;
    titleLabel.font = [UIFont systemFontOfSize:18.0];

尽管我的单元格已生成,但我的单元格永远不会为零,而我的 titleLabel 从未被分配。我看不出这是怎么可能的。if 状态永远不会为真,这应该是第一次生成的单元格,但是我的单元格是按原样创建的,没有我的 titleLabel

4

1 回答 1

5

听起来好像您正在使用 iOS 5(或更高版本)和 Storyboards。

在 iOS 5(或更高版本)下,如果您使用 Storyboard 和 TableView 控制器,则该dequeueReusableCellWithIdentifier:方法保证返回一个单元格(前提是您已在 Storyboard 中定义了具有给定标识符的单元格)。

如果是这种情况,解决方案是在情节提要中完全创建自定义表格单元格。转到 Storyboard 中的表视图,选择Content:Dynamic Prototypes并制作Prototype Cells:1. 现在以图形方式布局您的单元格,使其完全符合您的要求。现在单击单元格并设置Identifier:Cell2. 您现在不需要在运行时创建标签或检查它是否为 nil。完整的详细信息,包括如何引用您设置的标签,请参阅 iOS 5 发行说明(下面的链接)或网络上的许多教程。

请参阅 iOS 5 发行说明部分配置表格视图

于 2012-06-14T22:34:26.467 回答