删除了TableView的子视图 - Tableview不可见

时间:2012-03-19 17:32:05

标签: objective-c ios cocoa-touch uiview core-plot

第一次使用CorePlot(几个小时后尝试设置它:P)

在我看来,我有一个tableview。当调用某个IBAction时,我想显示另一个视图(图形)而不是tableview。

我的方法是在tableview中添加一个大小相同的子视图。它可以正常显示图形,但是当我从[table subviews]中删除图形视图时,tableview不会重新出现。

请注意:

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

-(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;
}

第一个屏幕截图:显示TableView

tableview

第二个屏幕截图:显示GraphView 旁注:这是一个sampleplot =)

graph

第3个屏幕截图: GraphView解雇

empty

有谁知道我错过了什么? (或搞砸了;))

1 个答案:

答案 0 :(得分:0)

将视图添加为UITableView的子视图通常不是一个好主意。

相反,您可以删除表视图并将其替换为Core Plot视图:

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

确保您在某个地方引用了表格视图,或者它将被释放。