我一直在用一个很酷的图表框架 (http://www.shinobicontrols.com/shinobicharts/) 进行一些测试,到目前为止,我让他们在我的项目上工作。他们看起来很棒!
就像我在任何测试中所做的那样,我尽可能简单地实现示例,然后,当它工作时,我继续在代码组织部门进行一些改进。
在我对所拥有的东西感到满意后,我开始稍微重构代码。现在我无法在我的视图上绘制图表。我已经使用 NSLog 测试了对方法的调用,并且所有内容都按预期调用。这是处理让我在这里旋转的视图。让我解释一下我有什么(当它工作时)和我做了什么(打破它)。
工作场景:
- ReportsViewController 1) 导入 chartLibrary.h 2) 导入 chartDatasource.h 3) 创建视图并添加
[self.view addSubview:chart];
都在同一个地方。都好。
我为组织代码所做的工作:
1)创建了一个新类“ChartReports”(起初我认为它应该是 NSObject,但后来我无法使用视图,所以我改为 UIViewController) 2)将所有导入和绘图代码移动到这个新类。为每种类型的图表创建绘图方法。3)将“ChartReports”导入“ReportsViewController” 4)创建新对象(ChartReports 类型)并在与我之前的整个代码完全相同的位置调用“drawChartX”的新方法(在“ReportsViewController”内)
一切都向南走:(
问题是调用是正确的,方法“drawChartX”被调用,我从头到尾 NSLog 以确保代码正在执行,但屏幕上没有绘制任何内容。
我创建它并这样称呼它:
ChartReports *chart = [[ChartReports alloc] init];
[chart drawChartX];
当我看到我移动的代码(从“ReportsViewController”到“ChartReports”)时,我注意到它仍然到处都是“self.view”。我认为这就是绘画被破坏的地方。“self”最初指的是“ReportsViewController”,现在它的意思是“ChartReports”。
那么,毕竟:我如何告诉“ChartReports”在“ReportsViewController”.view 上绘制而不是在它自己的视图上绘制?
我尝试了变量和属性,但没有成功。我应该将视图的名称作为方法参数发送吗?
很抱歉发布这么长的解释,但我没有想法尝试。任何一般性提示都会有助于重回正确的道路。
像往常一样感谢,