0

我有一个 UIView BoardView 我在其中画线。当我在表格视图中推送一个单元格时,我在 BoardView 中画了一条线。

当我按下第一个单元格时,一切正常,线条被绘制出来。现在,如果我按下第二个单元格,我想擦除第一行并绘制第二行。

我有一个布尔值来知道我是否必须画线。

在 viewController 中:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if(self.boardView.drawLine) {
        self.boardView.drawLine = NO;
       [self.boardView setNeedsDisplay]; //redisplay the context without lines
    }

    Path * path = [self.grid.sommesPathArray objectAtIndex:indexPath.row];
    [self.boardView drawPath:path];
    self.boardView.drawLine = YES;
    [self.boardView setNeedsDisplay]; // display the context with a line
}

在 BoardView.m 中:

- (void)drawRect:(CGRect)rect {

    if (self.drawLine) {
            for(Line * line in lines)
            [self drawLineWithContext: UIGraphicsGetCurrentContext() andLine:line]; //draw lines
    }

}

我的问题是这些行没有被删除。

4

1 回答 1

0

当您按下或选择第二个单元格或任何单元格时尝试这个。.

    [self.boardView.path removeAllObjects];  
    [self.boardView setNeedsDisplay];

或者

    [self.grid.sommesPathArray removeAllObjects];    
    [self.boardView setNeedsDisplay];

或者只是删除所有UIBezierPath用于在您的视图链接上绘制线的点波纹管..

[myPath removeAllPoints];
[self setNeedsDisplay];   
于 2013-04-01T10:37:53.717 回答