1

私はクールなチャートフレームワーク(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に描画するように指示するにはどうすればよいですか?

運が悪かったので、変数とプロパティを試しました。ビューの名前をメソッドパラメータとして送信する必要がありますか?

長い説明を投稿して申し訳ありませんが、試してみるアイデアがありません。一般的なヒントは、正しい道に戻るのに役立つだけではありません。

いつもありがとう、

4

1 に答える 1

1

ChartReportsオブジェクトはReportsViewControllerを利用しないでください。これにより、基本的なMVCの原則が破られます。代わりに、ChartReportsオブジェクトがビュー(つまりグラフ)を作成して返すようにコードを整理し、ReportsViewControllerがを使用してそのビューに追加する必要がありますaddSubview

このようにして、チャートの作成を別のオブジェクト(ChartReports)にカプセル化することはできますが、チャートを表示する作業はViewControllerに任せます。これはその仕事です。

于 2012-04-06T18:06:53.893 に答える