0

我通过创建自己的图表drawRect

@interface FTChartsView : UIView

@implementation FTChartsView

-(void)drawRect:(CGRect)rect
{
   ...
}

我还对 UITableViewCell 进行了子类化

@interface FTSummaryCellView : UITableViewCell
...

现在在 ViewController 中,当生成单元格时:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UINib *nib = [UINib nibWithNibName:@"FTSummaryCellView" bundle:nil];
    [[self tableView] registerNib:nib forCellReuseIdentifier:@"FTSummaryCellView"];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   FTSummaryCellView *cell = [tableView dequeueReusableCellWithIdentifier:@"FTSummaryCellView"];
   FTChartsView *chart = [[FTChartsView alloc] init];
   [cell addSubview:chart];
   return cell;
}

单元格将 chatrView 添加为子视图。然而,chartsViewdrawRect永远不会中断,因此永远不会显示。

请问我在这里缺少什么?

4

2 回答 2

1

你忘了setFrame

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"];
    TView *chart = [[TView alloc] initWithFrame:CGRectMake(10, 10, 30, 30)];
    [cell addSubview:chart];
    return cell;
}

非常适合我。

泰为[[self tableView] registerNib:nib forCellReuseIdentifier:@"FTSummaryCellView"];. 我从来不知道这种方法)

编辑

如我所知,您必须将子视图添加到内容视图。但是没有它,一切都对我有用。

[cell.contentView addSubview:chart];
于 2013-11-10T16:51:43.177 回答
0

这是在黑暗中刺伤...在将 FTChartView 添加到单元格之后...也许可以尝试这样做:

 [chart setNeedsDisplay];

如果你有一个自定义的 drawRect 方法,有时这会起作用。

甚至会

[chart.view setNeedsDisplay];
于 2013-11-10T16:39:26.977 回答