1

我在 iOS 应用程序中使用 CorePlot 来绘制散点图。首先,我在带有其他一些组件的视图中显示图形,但我还想让用户进入全屏模式以查看更多图形和平移/缩放。

当他们在全屏和非全屏模式之间切换时,我不想重绘图表,因为如果我可以重用视图,这似乎是浪费时间。

在以非全屏显示图形,然后以全屏显示图形方面,我的工作正常,但是当我退出全屏模式时,我仍然希望用户在正常视图中看到图形,但是图表视图已经消失了。

这是我最初在第一个视图(非全屏)中设置图形视图的地方

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"non full screen graph view did load");

    _graph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
    CPTTheme *theme = [CPTTheme themeNamed:kCPTSlateTheme];
    [_graph applyTheme:theme];
    CPTGraphHostingView *hostingView = (CPTGraphHostingView *)self.view;
    hostingView.collapsesLayers = NO; 
    hostingView.hostedGraph     = _graph;
    //add plots etc. to graph - not shown 
}

这工作得很好并绘制了我的图表。当我进入全屏模式时,这会显示全屏视图控制器:

-(void) goToFullScreen{
    NSLog(@"full screen");
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    [_rootNavController presentViewController:fullScreenVc animated:NO completion:nil];

    CPTGraphHostingView *hostingView = (CPTGraphHostingView *)fullScreenVc.graphView;
    hostingView.collapsesLayers = NO;
    hostingView.hostedGraph     = _graph;
    _graph.defaultPlotSpace.allowsUserInteraction = YES;
}

这也可以正常工作,用户可以在图形周围平移。

这就是问题所在 - 我正在关闭全屏视图控制器,并且不知何故也丢失了图形视图 - 当我回到原始视图控制器时,所有其他组件都在显示,但图形所在的视图应该是空的。

-(void) exitFullScreen{
    NSLog(@"leaving full screen");
    _graph.defaultPlotSpace.allowsUserInteraction = NO;
    [_rootNavController dismissViewControllerAnimated:NO completion:nil];
}

任何想法我做错了什么,以至于我失去了图表视图?我已经检查过,在exitFullScreen:_graph 的末尾不为空,它仍然包含我所有的情节。

谢谢,莎拉

4

1 回答 1

0

hostingView.hostedGraph = _graph;在关闭全屏控制器之前,将图表移回原始托管视图 ( )。作为核心动画层,图一次只能存在于一个层层次结构中。

于 2013-04-18T01:29:31.257 回答