UITableView缺少一些分隔线

时间:2017-08-30 09:49:30

标签: ios objective-c uitableview

我正在使用代码来构建这样的uitableview:

UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 290, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 290)]; 
tableView.delegate = self;
tableView.dataSource = self;
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"settingtabcell"];

dataresource和viewdelegate

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"settingtabcell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }else{
        for(UIView *subview in cell.subviews){
            [subview removeFromSuperview];
        }
    }
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(70, 0, [UIScreen mainScreen].bounds.size.width - 20, 90)];
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 30, 32, 32)];

    switch (indexPath.row) {
        case 0:
            label.text = @"Copyright information";
            imageView.image = [UIImage imageNamed:@"copyright.png"];
            break;
        case 1:
            label.text = @"Clear cache";
            imageView.image = [UIImage imageNamed:@"clearcache.png"];
            break;
        case 2:
            label.text = @"Feedback";
            imageView.image = [UIImage imageNamed:@"feedback.png"];
            break;
        case 3:
            label.text = @"About us";
            imageView.image = [UIImage imageNamed:@"about.png"];

        default:
            break;
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    [cell addSubview:imageView];
    [cell addSubview:label];
    return cell;
}

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 4;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 90;
}

事情是缺少一些分隔线,有些则没有,这真让我感到困惑。

enter image description here

那么可能是什么导致了这个问题?

修改

对于那些可能关注的人,此屏幕截图不是在模拟器上,而是在ihpone设备上捕获。

最初显示的是这条线,只是在向下滚动并弹回后,线条丢失了。

4 个答案:

答案 0 :(得分:2)

你可以采取另一种方式,

  • 删除分隔线
  • 在单元格的末尾添加高度为1px的UILabel,并将背景颜色设置为黑色或浅灰色(或任何您想要的颜色)。

答案 1 :(得分:2)

看起来您正在使用自定义单元类。 如果要覆盖单元类实现中的layoutSubviews()方法,请确保在方法中具有以下内容:

super.layoutSubviews()

或在Objective-C中:

[super layoutSubviews];

这解决了我的问题。

答案 2 :(得分:0)

在cellforrowatindexPath

中写下这一行
  cell.selectionStyle=UITableViewStylePlain;

并拖动一个带有视图控制器的UILabel宽度和高度1px位于内容视图的底部,看到图像中的蓝线

在故事板中做一些事情

enter image description here

在Device上重新加载表后,请参阅图像

enter image description here

答案 3 :(得分:0)

在我的情况下,这是自定义UITableViewCell上的“限界”。不小心从情节提要中取消了选择。然后再次将“剪辑到边界”设置为true可解决此问题。请执行此操作以解决您的问题。

Objective-C

[cell setClipToBound: YES];

迅速

cell.clipToBound = true

故事板:-

UITableViewCell或UITableViewCell XIB

enter image description here

谢谢。