在以下代码中,其他行重复 UILabel 文本。我知道它有一个表可重用性的问题,但无法弄清楚如何解决它。即使返回的计数,一切看起来都很好。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell;
//Doc Name
if(indexPath.section == 0)
{
cell=[tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell==nil)
{
cell= [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]autorelease];
}
cell.textLabel.text= docName;
cell.textLabel.font=[UIFont fontWithName:@"Times New Roman" size:17.f];
UILabel *name = [[UILabel alloc]init];
name.backgroundColor = [UIColor clearColor];
name.textAlignment = NSTextAlignmentCenter;
name.frame = CGRectMake(600,2.0f,250,50);
name.text = @"11:12:01";
[cell addSubview:name];
}
//Joint Work
if(indexPath.section == 1)
{
cell=[tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell==nil)
{
cell= [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]autorelease];
}
cell.textLabel.text= [jointWrkNames objectAtIndex:indexPath.row];
cell.textLabel.font=[UIFont fontWithName:@"Times New Roman" size:17.f];
}
//Detailing
if(indexPath.section == 2)
{
cell=[tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell==nil)
{
cell= [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]autorelease];
}
cell.textLabel.text= @"Detailing";
cell.textLabel.font=[UIFont fontWithName:@"Times New Roman" size:17.f];
}
}
答案 0 :(得分:3)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell;
//Doc Name
if(indexPath.section == 0)
{
cell=[tableView dequeueReusableCellWithIdentifier:@"section_0_cell"];
if(cell==nil)
{
cell= [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"section_0_cell"]autorelease];
}
cell.textLabel.text= docName;
cell.textLabel.font=[UIFont fontWithName:@"Times New Roman" size:17.f];
UILabel *name = [[UILabel alloc]init];
name.backgroundColor = [UIColor clearColor];
name.textAlignment = NSTextAlignmentCenter;
name.frame = CGRectMake(600,2.0f,250,50);
name.text = @"11:12:01";
[cell addSubview:name];
}
//Joint Work
if(indexPath.section == 1)
{
cell=[tableView dequeueReusableCellWithIdentifier:@"section_1_cell"];
if(cell==nil)
{
cell= [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"section_1_cell"]autorelease];
}
cell.textLabel.text= [jointWrkNames objectAtIndex:indexPath.row];
cell.textLabel.font=[UIFont fontWithName:@"Times New Roman" size:17.f];
}
//Detailing
if(indexPath.section == 2)
{
cell=[tableView dequeueReusableCellWithIdentifier:@"section_2_cell"];
if(cell==nil)
{
cell= [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"section_2_cell"]autorelease];
}
cell.textLabel.text= @"Detailing";
cell.textLabel.font=[UIFont fontWithName:@"Times New Roman" size:17.f];
}
return cell;
}
如果成功重用正确的单元格,cellIdentifier
必须对于不同类型的单元格是唯一的。因此,每个部分都有不同的标识符。
答案 1 :(得分:0)
在每次重新加载UILabel's
之前,您只需<{>>删除UITableView
每个单元格中UITableView
的实例。这会对你有所帮助
创建像
之类的单元格之后 static NSString *cellIdentifier = @"Identifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];
}
添加此
for(id obj in cell.contentView.subviews)
{
if([obj isKindOfClass:[UILabel class]])
{
[obj removeFromSuperview];
}
}
希望你的问题现在得到解决!
答案 2 :(得分:0)
如果创建单元格,即当单元格为零时
,则分配标签if(cell==nil)
{
cell= [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]autorelease];
UILabel *name = [[UILabel alloc]init];
}
答案 3 :(得分:0)
在表视图中重用单元格的简单方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell;
cell=[tableView dequeueReusableCellWithIdentifier:@"section_0_cell"];
if(cell==nil)
{
cell= [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"section_0_cell"];
cell.textLabel.font=[UIFont fontWithName:@"Times New Roman" size:17.f];
UILabel *name = [[UILabel alloc]init];
name.backgroundColor = [UIColor clearColor];
name.textAlignment = NSTextAlignmentCenter;
name.frame = CGRectMake(600,2.0f,250,50);
[cell addSubview:name];
name.tag=100;
}
UILabel *name = (UILabel*)[cell viewWithTag:100];
name.hidden=YES;
//Doc Name
if(indexPath.section == 0)
{
name.hidden=NO;
cell.textLabel.text= docName;
name.text = @"11:12:01";
}
//Joint Work
if(indexPath.section == 1)
{
cell.textLabel.text= [jointWrkNames objectAtIndex:indexPath.row];
}
//Detailing
if(indexPath.section == 2)
{
cell.textLabel.text= @"Detailing";
}
return cell;
}