使用自定义子视图滚动UITableView时复制数据
这工作之前,除非这么长时间,我忽略了一些东西。 当表格第一次显示一切看起来不错时,但如果我向上和向下滚动标签获得重复的内容。
-(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:
获取标签-viewWithTag:
tableView
但你应该问单元格。
在一个侧面说明,最好是将子视图添加到单元格的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; }
在if (cell == nil)
条件内写下这个波纹线
labelName.text = [data objectAtIndex:indexPath.row];
并评论或删除这个波纹线..
((UILabel *)[tableView viewWithTag:20]).text = [data objectAtIndex:indexPath.row];