需要有关在UITableViewCell上显示自定义分隔符的帮助

时间:2015-03-26 10:07:10

标签: ios objective-c uitableview tableviewcell

我尝试在UITableViewCell上有条件地绘制一个分隔符,所以首先我设置[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];,然后在我的UITableViewCell子类中我做了这个

.h文件

@property BOOL separator;

.m文件

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    if(self.separator)
        CGContextSetStrokeColorWithColor(context, [[UIColor colorWithRed:188.0/255.0 green:186.0/255.0 blue:193.0/255.0 alpha:1.0] CGColor]);
    else
        CGContextSetStrokeColorWithColor(context, [[UIColor clearColor] CGColor]);
    CGContextSetLineWidth(context, 0.5);
    CGContextMoveToPoint(context, 55.0, self.bounds.size.height);
    CGContextAddLineToPoint(context, self.bounds.size.width, self.bounds.size.height);
    CGContextDrawPath(context, kCGPathStroke);
}

cellForRowAtIndexPath内部方法我正在做这个

        if(indexPath.section == 0) {
                if(indexPath.row == 0) {
                    cell1 = [tableView dequeueReusableCellWithIdentifier:@"cell1"];
                    cell1.lbl1.text = name;
                    cell1.lbl1.font = [UIFont fontWithName:@"Helvetica-Bold" size:17.0];
                    cell1.separator = YES;
                }
        }

// other cells with different identifiers...

        if(indexPath.section == 5) {
            cell1 = [tableView dequeueReusableCellWithIdentifier:@"cell1"];
            cell1.lbl1.text = @"March 25";
            cell1.lbl1.font = [UIFont fontWithName:@"Helvetica-Regular" size:1.0];
            cell1.separator = NO;
            return cell1;
        }

在第5部分中,我不想显示分隔符,所以我做了cell1.separator = NO;,但为什么我仍然会得到它?

2 个答案:

答案 0 :(得分:1)

由于表格单元格可重复使用,因此可能会重新绘制。如果separator属性为false,请尝试擦除它。

答案 1 :(得分:1)

在出列单元格后,可能不会在单元格对象上调用drawRect:方法。您可以尝试为separator属性添加setter,并在其中调用setNeedsDisplay,如下所示:

- (void)setSeparator:(BOOL)separator
{
    _separator = separator;
    [self setNeedsDisplay];
}

这会在为drawRect:属性分配新值后调用separator方法。