我有UITableView的这个错误,我用故事板制作了一个原型单元格,并且它可以崩溃,这意味着当你击中单元格时,你会在该主题下获得更多单元格。
该主题下的所有其他单元格都将UIImageView作为侧视图。 发生的事情是,在我第一次点击该主题单元格后,应该只附加到子单元格的图像也附加到主题单元格。
所以,当我点击一个单元格时,我更改了这个数组以了解它的可折叠性:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//subject hitted
if (indexPath.row == 0)
{
collapsedRows[indexPath.section]= ! collapsedRows[indexPath.section];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section]withRowAnimation:UITableViewRowAnimationFade];
}
}
我告诉表格查看它有多少部分 - 现在它有更多部分,因为它已打开:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//subject cell is open
if(collapsedRows[section])
{
if([[allAppointments objectAtIndex:section] count]>0)
{
NSMutableArray *sectionTime=[allAppointments objectAtIndex:section];
return [sectionTime count]+1;
}
else
return 1;
}
else
return 1;
}
,重新加载表时,我只将图像附加到非0(=主题)的行
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
//labels on the cell
UILabel *labelBusiness = (UILabel *)[cell viewWithTag:1];
UILabel *labelTime = (UILabel *)[cell viewWithTag:3];
UILabel *labelStreet = (UILabel *)[cell viewWithTag:4];
UIImageView *sideView=(UIImageView*)[cell viewWithTag:6];
UILabel *labelTitle = (UILabel *)[cell viewWithTag:8];
labelBusiness.text=@"";
labelStreet.text=@"";
labelTime.text=@"";
labelTitle.text=@"";
// ONLY WHEN SUBJECT SHOW THE SUBJECT TITLE-NO IMAGE HERE!
if (indexPath.row==0)
{
NSString *title=@"";
if(indexPath.section==0)
title=@"PAST";
else if(indexPath.section==1)
title=@"TODAY";
else if(indexPath.section==2)
title=@"TOMORROW";
else if(indexPath.section==3)
title=@"FUTURE";
labelTitle.text=title;
}
//ON THE SUB CELLS ONLY SHOW IMAGES
else
{
//do more stuff here….
//show images
if( [allImages count]>0)
{
cell.imageView.layer.masksToBounds = YES;
cell.imageView.layer.cornerRadius = 12.0;
cell.imageView.image=[[allImages objectAtIndex:indexPath.section] objectAtIndex:indexPath.row-1] ;
}
}
}
return cell;
}
所以在我第一次打开行并打开子细胞后,关闭它们,从现在开始,图像也附加了主题细胞!
记录不会显示其偶数进入else
条件。
答案 0 :(得分:2)
当单元格从重用队列中出来时,它们中包含所有旧信息。因此,您需要将cell.imageView.image
设置为nil
,以便在设置subject cell
时删除图像。