2011-08-19 70 views
0

我正在使用以下代码创建一个带有标签的自定义UITableViewCell。当重新使用自定义UITableViewCells内容时

我遇到的问题是,单元格在重用时没有被清除,而且我不确定如何操作,因为我不认为当它出队时有权访问单元格内容。

任何人都可以告诉我我该怎么做吗?

if (indexPath.section == 2) { 
    // Resetting the elements in the cell prior to use. 

    UIView *blankCell; 
    UILabel *methodText; 

    static NSString *methodCellIdentifier = @"Method Cell"; 

    methodCell = [tableView dequeueReusableCellWithIdentifier: methodCellIdentifier]; 

    if (methodCell == nil) 
    { 
     methodCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: methodCellIdentifier] autorelease]; 
    } 

    blankCell = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
    methodText = [[UILabel alloc] initWithFrame:CGRectMake(15, 7, 305, 44)]; 
    methodText.text = [[self.recipeDict objectForKey:@"Method"] objectAtIndex: indexPath.row]; 
    NSLog(@"methodText.text = %@", methodText.text); 
    [methodText setLineBreakMode:UILineBreakModeWordWrap]; 
    [methodText setNumberOfLines:0]; 
    [methodText sizeToFit]; 

    [blankCell addSubview:methodText]; 
    [methodCell.contentView addSubview:blankCell]; 

    [methodText release]; 

    methodCell.contentMode = UIViewContentModeRedraw; 

    return methodCell; 
} 

回答

1

移动在检查methodCell是否为零的块内创建子视图的代码。只在该区块之外更新其内容。

if (methodCell == nil) 
    { 
     methodCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: methodCellIdentifier] autorelease]; 
     blankCell = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
     methodText = [[UILabel alloc] initWithFrame:CGRectMake(15, 7, 305, 44)]; 
     [methodText setLineBreakMode:UILineBreakModeWordWrap]; 
     [methodText setNumberOfLines:0]; 
     [blankCell addSubview:methodText]; 
     [methodCell.contentView addSubview:blankCell]; 

     methodText.tag = 1; 

     [methodText release]; 
     [blankCell release]; 

     methodCell.contentMode = UIViewContentModeRedraw; 
    } 

    methodText = (UITextField*)[methodCell viewWithTag:1]; 
    methodText.text = [[self.recipeDict objectForKey:@"Method"] objectAtIndex: indexPath.row]; 
    NSLog(@"methodText.text = %@", methodText.text); 
    [methodText sizeToFit]; 
+0

这工作太好了,谢谢:要访问这些块之外,他们创造并使用viewWithTag找到并更新他们的内容时,他们一组标签值。 –

+0

虽然这在我尝试后运行良好,但我现在看到类似的问题发生,但我认为这与我找出由上述代码生成的单元格的高度有关。你有什么可以帮忙的吗? –

+0

双重检查,现在它似乎并没有工作。不知道发生了什么事。 –

相关问题