1

我按照 John Wordsworth 教程 ( http://www.johnwordsworth.com/2011/10/adding-charts-to-your-iphone-ipad-app-using-core-plot/ ) 使用 CorePlot 生成折线图。

后来我决定从一个网站获取一些 JSON 数据,以便将其用于我的图表。

所有 url 连接方法都在我的ViewController.m文件中执行。在那里我创建了一个indicator包含所有 JSON 数据的 NSArray。

我的问题是,所有图形的参数都定义在一个单独的 NSObject 类SimpleScatterPlot.m中,我想使用字符串数组“ indicator”(在 中定义ViewController.m)来自定义 x 轴标签。

我需要做什么才能在 中使用这个 JSON 数据数组SimpleScatterPlot.m
我试过#import "ViewController.h"了,但没有解决。

提前感谢您能给我的任何指导。

4

3 回答 3

0

不确定我是否理解正确,但我认为您没有尝试从 SimpleScatterView.m 访问指标 nsarray,而是在 ViewController.m 中设置值。

1)在 SimpleScatterView.m 中定义一个公共的 NSArray 并合成它。

2) 不要尝试获取访问权限,而是使用 ViewControler.m 中的“prepareForSegue”在destinationSegueController 中设置指示器。

3) 在 SimpleScatterView.m 中实现“-(void)setIndicator:(NSArray *)indicator”并根据需要更新 GUI。

虽然“模型 - 视图 - 控制器”范式建议不要使用 ViewControllers 来执行通信等,但那是针对另一个线程的。

于 2013-02-19T15:24:42.213 回答
0

如果我没有正确阅读您要执行的操作,我的猜测是您可以SimpleScatterView从您的UIViewController视图中适当地使用(假设SimpleScatterView实际上是 a UIView)。

在这种情况下,当您的控制器下载其数据时,您可以SimpleScatterView通过将其添加到视图控制器来实例化并显示它view

... <data has been downloaded> ...
SimpleScatterView* scatterView = [[SimpleScatterView alloc] initWithFrame:...];
[self.view addSubview:scatterView];

当你初始化你的SimpleScatterView时,你可以给它传递一个对数据数组的引用(比如说,在它的自定义 init 方法中,或者使用一个属性)。例如:

SimpleScatterView* scatterView = [[SimpleScatterView alloc] initWithFrame:... andData:(NSArray*)...];

或者:

scatterView.dataSet = <your_json_array>;

当然,对于这种设计,您有很多替代方案。具体来说,我会提到:

  1. 使用模型类处理所有数据的可能性,这样控制器将数据写入模型,而绘图视图从中读取数据。在这种情况下,该模型可以通过单例实现,以便于访问;

  2. 为您的绘图视图使用“数据源”的可能性:这将需要在视图和它的数据源之间定义一个协议(例如,一个getData方法);您的视图控制器将扮演数据源的角色(换句话说,不是像上面的示例那样将数组传递给绘图视图,而是传递对控制器的引用,视图将访问其数据)。

于 2013-02-19T15:24:55.293 回答
0

在 Viewcontroller 中创建一个属性并合成它。然后将 JSON 数据传递给属性。

To access the array in SimpleScatterView.m:
    Viewcontroller *viewcontrol = [[ViewController alloc] init];
    You can then access the array by using viewcontrol.indicator.
    NSLog(@"%@",viewcontrol.indicator);
于 2013-02-19T15:25:43.520 回答