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 ではなく、すべてのプロットが含まれています。
ありがとう、サラ