0

私はテーブル ビューを持っており、各セルにいくつかの統計バーを描画したいと考えています。カスタム セルに空の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];
  • 別のカスタム セルで作成されたヘッダーがあります。
4

3 に答える 3

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)

于 2013-02-02T16:05:00.787 に答える
0

あなたの説明は、この関数の外で barView を埋めていることを明確に示しています。遷移後にのみ表示されるようにします。または、ここで提供したものの外側で単に上書きしています(またはメインビューを上書きしています)。

viewdidload と viewdidappear などを確認してください。

于 2013-02-02T13:06:22.820 に答える
-1

私はそれを簡単に解決しました:

- (void)viewDidAppear:(BOOL)animated
{
    [self.tableView reloadData];
}

ビューがウィンドウに作成される前、セルが完全に読み込まれる前に、サブビューを追加することはできないようです。

于 2013-02-05T15:26:58.423 に答える