我正在尝试使用带有自定义图像的分隔符单元格。我确实尝试过这样的事情:
在我的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;
当我在应用程序中午餐时,一切都很好,但是当我滚动表格时,或者当我选择一个单元格时,分隔线会消失。我如何拥有永久的自定义行分隔符?
答案 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只创建一次并添加到单元格中一次。
祝你好运!