2012-03-19 4 views
0

CorePlot(それを設定しようとしている時間のカップルの後に:P)での作業は初めて私の見解で削除 - テーブルビュー見えない

、私はテーブルビューを持っています。特定のIBActionが呼び出されるとき、私はテーブルビューの代わりに別のビュー(グラフ)を表示したいと思う。

私のアプローチは、テーブルビューに同じサイズのサブビューを追加することでした。グラフを表示するのにうまくいきますが、グラフビューを[テーブルのサブビュー]から削除すると、テーブルビューは再表示されません。

注:第1回スクリーンショット

-(IBAction)displayDayBalanceGraph:(id)sender{ 
if (hasSubView) { 

    [[expenseTable subviews] makeObjectsPerformSelector: @selector(removeFromSuperview)]; 
    NSLog(@"%@",expenseTable.subviews); 
} 

else{ 
    [self initializeMonthArray]; 
    CPTGraphHostingView *host = [self buildGraphView]; 
    [expenseTable addSubview:host]; 
    CPTXYGraph *graph = [[CPTXYGraph alloc ]initWithFrame:host.frame]; 
    host.hostedGraph = graph; 
    CPTScatterPlot *plot = [[CPTScatterPlot alloc]init ]; 
    plot.dataSource = self; 
    [graph addPlot:plot]; 
    [expenseTable reloadData]; 
    hasSubView = !hasSubView; 
} 
} 

-(CPTGraphHostingView *)buildGraphView{ 
    CPTGraphHostingView *view = [[CPTGraphHostingView alloc]initWithFrame:CGRectMake(0, 0, 312, 260)]; 
    [view setBackgroundColor:[self grayColor]]; 
    return view; 
} 

expenseTable: my tableView 
hasSubView: (BOOL) that indicates if a graph is shown right now or not 

コード:テーブルビューが表示さ

tableview

第二スクリーンショット:GraphViewを表示 追記:これはsampleplotです=)

graph

第三スクリーンショット:GraphViewは

empty

を退け、私は逃したものを誰のアイデアを持っていますか?

+0

- すべてのセルがサブビューであるため、私はちょうど想像したすべてを削除する必要があります。だから私は新しいサブビューが持っているインデックスを知る必要がありますか?何か案は? –

+0

GraphViewをどのように解除しますか? –

+0

上記のコードを見てください: '[[expenseTable subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];' –

答えて

0

一般的には、ビューをサブビューとしてUITableViewとして追加することはお勧めできません。

代わりに、テーブルビューを削除し、コアプロットビューでそれを置き換えることができ、次のいずれか

[tableView removeFromSuperview]; 
[containerView addSubview:corePlotView]; 

は、あなたがどこかにテーブルビューへの参照を持っているか、それがリリースされることを確認してください。

+0

私はあとで試してみましょう。私はテーブル上のsubviesを使用することについてちょっと不安でしたが、私はあなたがビューを置き換えることができることを知っていませんでした(私のために)最も明白な方法を試してみました:-) –

+0

ちょうどそれを試しました - 実際に[tableview superview]は持っていませんメンバ関数 'replaceSubview' - 任意のアイデア? tableviewは、とデータソースだけを実装するuiviewcontroller内にあります。 –

+0

申し訳ありませんが、私はMac OSに対応していました。その方法が存在しないiOSでは、私は自分の答えを更新しました。あなたが知っているように、iOSの質問には[タグ:ココア]ではなくタグ[タグ:cocoa-touch]を付けてください。私はタグを更新しました。 –

関連する問題