UITableViewCell分隔线在滚动时消失

时间:2014-07-06 11:23:52

标签: ios objective-c uitableview

我正在尝试使用带有自定义图像的分隔符单元格。我确实尝试过这样的事情:

在我的cellForRowAtIndexPath中:

NSString *cellIdentifier = [NSString stringWithFormat:@"identifier"];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
}

cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:19];
cell.textLabel.text = [self.menuItems objectAtIndex:indexPath.row];
cell.textLabel.textColor = [UIColor colorWithRed:128/255.0f green:129/255.0f blue:132/255.0f alpha:1.0f];
cell.backgroundColor = [UIColor whiteColor];

UIImageView *imagView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"reaL.png"]];
imagView.frame = CGRectMake(0, cellHeight, cellWidth, 1);
[cell.contentView addSubview:imagView];

switch (indexPath.row) {
    case 0:
        cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"img1.png"] scaledToSize:CGSizeMake(27, 27)];
        cell.imageView.highlightedImage = [self imageWithImage:[UIImage imageNamed:@"route.png"] scaledToSize:CGSizeMake(27, 27)];
        break;
    case 1:
        cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"img.png"] scaledToSize:CGSizeMake(27, 27)];
        cell.imageView.highlightedImage = [self imageWithImage:[UIImage imageNamed:@"money.png"] scaledToSize:CGSizeMake(27, 27)];
        break;
    case 2:
        cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"auto.png"] scaledToSize:CGSizeMake(27, 27)];
        cell.imageView.highlightedImage = [self imageWithImage:[UIImage imageNamed:@"cars.png"] scaledToSize:CGSizeMake(27, 27)];
        break;
    case 3:
        cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"impostazioni.png"] scaledToSize:CGSizeMake(27, 27)];
        cell.imageView.highlightedImage = [self imageWithImage:[UIImage imageNamed:@"impostazioni.png"] scaledToSize:CGSizeMake(27, 27)];
       // cell.imageView.contentMode = UIViewContentModeScaleAspectFill;
        break;
    case 4:
        cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"info.png"] scaledToSize:CGSizeMake(27, 27)];
        cell.imageView.highlightedImage = [self imageWithImage:[UIImage imageNamed:@"info.png"] scaledToSize:CGSizeMake(27, 27)];
        break;
    default:
        break;
}

return cell;

当我在应用程序中午餐时,一切都很好,但是当我滚动表格时,或者当我选择一个单元格时,分隔线会消失。我如何拥有永久的自定义行分隔符?

1 个答案:

答案 0 :(得分:0)

您首先没有正确创建单元格。以下是一些可能有助于解决您遇到的问题的提示。

首先,从ios6开始,Apple现在允许我们预先注册我们用于将单元格出列的类,以便不再需要进行单元检查。在您的视图中加载,您将要执行类似于以下操作的内容:

[self.tableView registerClass:[CustomTableViewCellClass class] forCellReuseIdentifier:customIdentifier];

这将允许您每次都正确地将单元格出列,如:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:customIdentifier];

接下来,这就是我认为你遇到问题的地方。您正在创建一个图像视图,并在每次单元格出列时将其添加到单元格中。

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"reaL.png"]];
imageView.frame = CGRectMake(0, cellHeight, cellWidth, 1);
[cell.contentView addSubview:imageView];

您只需在第一次创建单元格时执行此操作,否则每次重新使用单元格时,您将不断将UIImageViews添加到单元格的顶部。对于这种情况,更好的模式是在自定义单元格本身上有一个UIImageView *引用。当单元格出列时,然后设置图像和框架。这样,UIImageView只创建一次并添加到单元格中一次。

祝你好运!