我的问题:我的一些自定义UITableViewCell包含额外的UILabel和额外的UIView以获取更多信息。 在我的代码中,当没有此对象的信息时,我删除了这些额外的UILabel和UIView。 但每次用户滚动浏览UITableView时,这些标签都会隐藏,尽管这些单元格还有其他信息,并显示在另一个单元格中。
这是我的代码:
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NBSnackTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell"];
NSDictionary *softdrinkDict = [_allSoftdrinksArray objectAtIndex:indexPath.row];
cell.snackNameLabel.text = [softdrinkDict valueForKey:@"name"];
cell.snackPriceLabel.text = [NSString stringWithFormat:@"%@ - %@", [softdrinkDict valueForKey:@"size"], [softdrinkDict valueForKey:@"preis"]];
if ([softdrinkDict valueForKey:@"info"])
{
cell.accessoryType = UITableViewCellAccessoryDetailButton;
cell.tintColor = [NBColor primaryTextColor];
cell.snackInfoLabel.text = [softdrinkDict valueForKey:@"info"];
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
[cell.snackInfoLabel removeFromSuperview];
[cell.snackInfoView removeFromSuperview];
}
if ([softdrinkDict valueForKey:@"zusatzstoffe"])
{
cell.snackZusatzstoffLabel.text = [softdrinkDict valueForKey:@"zusatzstoffe"];
}
else
{
[cell.snackZusatzstoffLabel removeFromSuperview];
}
[cell layoutContentWithRect:cell.bounds];
return cell;}
答案 0 :(得分:1)
我发现了一个问题:
您正在从超级视图中删除标签,但不会将其重新添加为您单元格的子视图。
您可以将文本设置为@“”,或者确保在有数据要显示时将标签添加到单元格的contentView中,而不是在标签上调用removeFromSuperview。
示例:
if ([softdrinkDict valueForKey:@"zusatzstoffe"])
{
if (![cell.snackZusatzstoffLabel isDescendantOfView:cell.contentView]) {
[cell.contentView addSubview:cell.snackZusatzstoffLabel];
}
cell.snackZusatzstoffLabel.text = [softdrinkDict valueForKey:@"zusatzstoffe"];
}
else
{
[cell.snackZusatzstoffLabel removeFromSuperview];
}