UITableViewCell分配问题 - 单元格不是零

时间:2012-06-14 22:17:51

标签: iphone ios uitableview

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

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

1 个答案:

答案 0 :(得分:5)

听起来好像您使用的是iOS 5(或更高版本)和故事板。

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

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

请参阅iOS 5发行说明部分Configuring Table Views