我遵循John Wordsworth教程(http://www.johnwordsworth.com/2011/10/adding-charts-to-your-iphone-ipad-app-using-core-plot/)来生成CorePlot的折线图。
后来我决定从网站上获取一些JSON数据,以便我可以将它用于我的图表。
所有url连接方法都在我的ViewController.m
文件中执行。在那里,我创建了一个名为indicator
的NSArray,其中包含所有JSON数据。
我的问题是所有图形的参数都在一个名为SimpleScatterPlot.m
的单独的NSObject类中定义,我想使用字符串数组“indicator
”(在ViewController.m
中定义)自定义x轴标签。
我需要做什么才能在SimpleScatterPlot.m
中使用此JSON数据?
我试过了#import "ViewController.h"
,但没有解决它。
提前感谢你给我的任何指导。
答案 0 :(得分:0)
不确定我是否正确理解它,但我认为你没有尝试从SimpleScatterView.m访问指标nsarray,而是设置ViewController.m中的值。
1)在SimpleScatterView.m中定义一个公共NSArray并合成它。
2)不要试图获取访问权限,而是使用ViewControler.m中的“prepareForSegue”在destinationSegueController中设置指标。
3)在SimpleScatterView.m中实现“ - (void)setIndicator:(NSArray *)指示器”并根据需要更新GUI。
虽然“模型 - 视图 - 控制器”范例建议不要使用ViewControllers来执行通信等,但这是针对另一个线程的。
答案 1 :(得分:0)
如果我没有错误地阅读您要执行的操作,我猜您可以在SimpleScatterView
视图中正确使用UIViewController
(假设SimpleScatterView
是UIView
实际上是SimpleScatterView
)。
在这种情况下,当您的控制器下载了数据时,您可以实例化view
并通过将其添加到视图控制器... <data has been downloaded> ...
SimpleScatterView* scatterView = [[SimpleScatterView alloc] initWithFrame:...];
[self.view addSubview:scatterView];
来显示它。
SimpleScatterView
初始化SimpleScatterView* scatterView = [[SimpleScatterView alloc] initWithFrame:... andData:(NSArray*)...];
时,可以向它传递对数据数组的引用(例如,在其自定义init方法中,或使用属性)。 e.g:
scatterView.dataSet = <your_json_array>;
或:
getData
当然,你有很多这种设计的替代品。具体来说,我会提到:
使用模型类处理所有数据的可能性,以便控制器将数据写入模型,而绘图视图从中读取数据。在这种情况下,该模型可以通过单例实现,以便于访问;
为绘图视图使用“dataSource”的可能性:这需要在视图与其数据源之间定义协议(例如,{{1}}方法);您的视图控制器将扮演数据源的角色(换句话说,不是将数组传递到绘图视图,如上例所示,您将传递对控制器的引用,视图将访问其数据)。
答案 2 :(得分: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);