barView我有一个表视图,在每个单元格中,我想绘制一些统计条。我在自定义单元格中创建了一个空UIView
,其名称为mainView
,它是绘制图表的视图。
在cellForRowAtIndexPath
我这样做:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CustomCellIdentifier";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
CGRect barRect = CGRectMake(0, 0, 100, 10);
UIView *barView = [[UIView alloc] initWithFrame:barRect];
[barView setBackgroundColor:[UIColor redColor]];
[cell.mainView addSubview:barView];
return cell;
}
加载时未显示barView
。它仅在我从另一个标签更改并返回后显示,或者在单元格退出屏幕后显示。
备注:
[cell.mainView setNeedsDisplay];
答案 0 :(得分:1)
试试这个:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CustomCellIdentifier";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
CGRect barRect = CGRectMake(0, 0, 100, 10);
UIView *barView = [[UIView alloc] initWithFrame:barRect];
[barView setBackgroundColor:[UIColor redColor]];
[cell addSubview:barView]; // use cell.mainView if you have that created somewhere other than here (like IB)
}
return cell;
}
dequeueResuable...
可以返回nil单元格。所以你需要检查一下,看看是否应该分配/初始化一个新单元格。在我给你的代码中,如果dequeueResuable...
返回一个正确的单元格,那么它将在子视图已经完整的情况下创建。因此无需重新添加它(因此仅在if (!cell)
)
答案 1 :(得分:0)
您的说明清楚地表明您正在此功能之外填写barView。这样它只有在过渡后才能看到。 或者你只是在你提供的内容之外覆盖它(甚至覆盖主视图)。
检查你的viewdidload和viewdidappear等。
答案 2 :(得分:-1)
我已经轻松解决了这个问题:
- (void)viewDidAppear:(BOOL)animated
{
[self.tableView reloadData];
}
在单元格完全加载之前,似乎无法在窗口中创建视图之前添加子视图。