gpt4 book ai didi

iphone - 使用自定义 subview 滚动 UITableView 时重复数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:17:39 26 4
gpt4 key购买 nike

这以前有效,除非它已经太久了我忽略了一些东西。当表格第一次显示时,一切看起来都很棒,但如果我上下滚动标签,则会得到重复的内容。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"CellIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

UILabel *labelName = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, tableView.frame.size.width, 35)];

labelName.tag = 20;

[cell addSubview:labelName];
}

((UILabel *)[tableView viewWithTag:20]).text = [data objectAtIndex:indexPath.row];

return cell;
}

最佳答案

我发现了引起它的那一行!

((UILabel *)[tableView viewWithTag:20]).text = [data objectAtIndex:indexPath.row];

您通过将 -viewWithTag: 发送到 tableView 来获取标签,但您应该询问单元格。

附带说明,将 subview 添加到单元格的 contentView

总是更好

这是正确的实现方式。

-(UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CellIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];

UILabel *labelName = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, tableView.frame.size.width, 35)];

labelName.tag = 20;

[cell.contentView addSubview:labelName];
}

((UILabel *)[cell.contentView viewWithTag:20]).text = [data objectAtIndex:indexPath.row];

return cell;
}

关于iphone - 使用自定义 subview 滚动 UITableView 时重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18379280/

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