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 の最後は null ではなく、すべてのプロットが含まれています。

ありがとう、サラ

4

1 に答える 1