无法显示向UITableViewCell添加SubView

时间:2013-11-10 16:34:25

标签: ios uitableview ios7

我已通过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添加为子视图。然而,chartView的drawRect永远不会破坏,因此永远不会显示。

我在这里想念的是什么?

2 个答案:

答案 0 :(得分: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;
}

完美适合我。

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

修改

您必须像我所知,将子视图添加到内容视图。但是如果没有这一点,一切都适合我。

[cell.contentView addSubview:chart];

答案 1 :(得分:0)

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

 [chart setNeedsDisplay];

如果你有自定义的drawRect方法,有时会有效。

甚至可能

[chart.view setNeedsDisplay];