gpt4 book ai didi

objective-c - 重用时重置自定义 UITableViewCells 内容

转载 作者:行者123 更新时间:2023-11-29 05:00:23 25 4
gpt4 key购买 nike

我使用以下代码创建一个带有标签的自定义 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com