我使用以下代码创建一个带有标签的自定义 UITableViewCell。
我遇到的问题是单元格在重复使用时不会被清除,并且我不确定如何执行此操作,因为我认为在单元格出列时我无法访问单元格内容。
谁能告诉我该怎么做?
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;
}
最佳答案
将创建 subview 的代码移到检查 methodCell 是否为 nil 的 block 内。仅更新该 block 之外的内容。要在 block 外访问它们,请在创建它们时设置它们的标签值,并使用 viewWithTag 查找和更新它们的内容:
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];
关于objective-c - 重用时重置自定义 UITableViewCells 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7124464/