【问题标题】:ScatterPlot doesn't let me tap plot points or move graphScatterPlot 不允许我点击绘图点或移动图形
【发布时间】:2011-11-20 20:36:28
【问题描述】:

我正在尝试在我的 iOS 应用程序中使用 Core Plot 中的散点图。我按照 Core Plot wiki 的说明设置了 Core Plot,然后将 PlotItem.h/m、PlotGallery.h/m 和 SimpleScatterPlot.h/m 从包含的 Plot Gallery 项目复制到我的项目中。代码

CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
SimpleScatterPlot *scatterPlot = [[SimpleScatterPlot alloc]init];
[scatterPlot generateData];
[scatterPlot renderInLayer:hostView withTheme:theme];

运行,图形视图显示在我的应用程序中。但是我不能像在 Plot Gallery 项目中那样移动图形视图或点击绘图点。如何正确设置?

【问题讨论】:

  • hostView 是一个 CPTGraphHostingView,它在我的 viewController.h 中声明,并且在 Interface Builder 中有一个连接到 CPTGraphHostingView 的 IBOutlet。

标签: objective-c cocoa-touch graph core-plot scatter-plot


【解决方案1】:

绘图库对于简单的核心绘图演示来说是一个糟糕的起点。它有很多额外的“东西”来支持生成带有所有不同图的缩略图的表格视图。 -renderInView:withTheme: 方法用于制作表格视图的缩略图。它将图形呈现为图像,这就是您失去交互性的原因。 除非您需要灵活地快速向应用程序添加新图并轻松支持 MacOS 和 iOS,否则我建议您使用其他示例之一作为初始点。该架构更加简单易懂。

您需要在可见视图层次结构中有一个CPTGraphHostingView。将您的图表设置为其hostedGraph。查看任何其他示例应用程序以了解如何设置托管视图。 Plot Gallery 图中的图形设置和数据源代码(例如 SimpleScatterPlot)很好,应该可以在任何地方使用。

【讨论】:

  • 你的意思是 renderInLayer:withTheme: 方法只创建一个图像?由 PlotGallery 项目中的 SimpleScatterPlot 制作的图形可用于移动和交互,但似乎无法在我自己的项目中设置它...
  • 好的,现在我终于设法在我的应用程序中获得了一个情节。通过 PlotGallery 的一些复制粘贴并在线阅读一些(旧)教程。现在主要问题是当我触摸其中一个绘图“按钮”时显示值。我相信这与 -(void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index-method 有关,但我对 delegates/datasources 不够熟悉,无法使其正常工作。当我按下其中一个绘图按钮时,是否会自动调用此方法?发送了哪些参数?
  • 在绘图库和其他示例应用程序中有该委托方法的示例。参数是被触摸的图(因此您可以对多个图使用相同的委托)和点的索引。该索引与用于从数据源检索点的索引匹配。
猜你喜欢
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多