私はクールなチャートフレームワーク(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タイプ)を作成し、新しいメソッドを呼び出して、以前のコード全体とまったく同じ場所(「ReportsViewController」内)で「drawChartX」を呼び出しました。
それはすべて南に行きました:(
重要なのは、呼び出しが正しく、メソッド「drawChartX」が呼び出され、コードが実行されていることを確認するために最初から最後までNSLogが実行されますが、画面には何も描画されません。
私はそれを作成し、次のように呼びます:
ChartReports *chart = [[ChartReports alloc] init];
[chart drawChartX];
(「ReportsViewController」から「ChartReports」に)移動したコードを見ると、まだどこでも「self.view」と表示されていることがわかります。絵が崩れているところだと思います。「self」は元々「ReportsViewController」を指していましたが、現在は「ChartReports」を意味します。
それで、結局のところ、「ChartReports」に、それ自体のビューではなく「ReportsViewController」.viewに描画するように指示するにはどうすればよいですか?
運が悪かったので、変数とプロパティを試しました。ビューの名前をメソッドパラメータとして送信する必要がありますか?
長い説明を投稿して申し訳ありませんが、試してみるアイデアがありません。一般的なヒントは、正しい道に戻るのに役立つだけではありません。
いつもありがとう、