2012-04-06 8 views
1

私はクールなチャートフレームワーク(http://www.shinobicontrols.com/shinobicharts/)でいくつかのテストを行っています。彼らは素晴らしいよ!リファクタリングコードの後でself.viewを操作する

私はできるだけ簡単にサンプルを実装していますし、動作しているときには、コード編成部門で少し改善を進めていきます。

私が気に入ったところで、コードを少しリファクタリングし始めました。今私は私の見解で描くためにチャートを得ることができません。私はNSLogでメソッドへの呼び出しをテストし、すべてが期待通りに呼び出されています。ここで私を回転させたものを扱うビューです。私が持っていたこと(働いていた時)と私がしたこと(壊したこと)を説明しましょう。

作業シナリオ:

  • ReportsViewController 1)輸入chartLibrary.h 2)輸入chartDatasource.h 3)ビューを作成し、すべて同じ場所に[self.view addSubview:chart];

を添加しました。すべての良い。私は自分のコード整理するためにやった

1)は、新しいクラス「ChartReports」を作成した(最初、私はそれがNSObjectのでなければなりませんが、私はのUIViewControllerに変更して、私はビューでは動作しないと考えていた) 2 )すべてのインポートと描画コードをこの新しいクラスに移動しました。チャートの種類ごとに描画メソッドを作成します。 3) "ReportsViewController"に "ChartReports"をインポート 4)ChartReports型の新しいオブジェクトを作成し、以前の "ReportsViewController"内のコード全体と同じ場所に "drawChartX"という新しいメソッドを呼び出しました

は、それはすべてのものは、コールが正しいことを、メソッド「drawChartXが」と呼ばれている

:(南行き、私のNSLogを最初からコードが実行されていることを確認するために終了するが、何もして描画されません画面

私はそれを作成し、このようにそれを呼び出します。

ChartReports *chart = [[ChartReports alloc] init]; 

[chart drawChartX]; 

「ReportsViewController」から「ChartReports」に移動したコードを見ると、どこでも「self.view」と表示されています。私はこれが絵が壊れている場所だと思う。 "self"はもともと "ReportsViewController"を参照していましたが、今は "ChartReports"を意味しています。

それ以降、「ChartReports」に「ReportsViewController」.viewを描画し、それ自身のビューでは表示しないようにするにはどうすればよいですか?

私は運がない変数とプロパティを試しました。私はたぶんメソッドのパラメータとしてビューの名前を送信する必要がありますか?

このような長い説明を残して申し訳ありませんが、私は試してみるアイデアがありません。どんな一般的なヒントも、正しい道に戻るのに役立ちます。いつものように

おかげで、

答えて

1

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

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

+0

こんにちは@jonkroll。私はあなたの言うことを理解しています。私はそれを実装しようとします(私はこれで新しいですが)私はMVCのあなたの熱心な観察から派生した別の質問があります。ここでの「描画」は「addSubview」部分のみを参照するか、initWithFrame、autoresizingMask、ラベル割り当てなども含まれますか?私はいいえと言っていますが、もしあなたが確認できれば、私はすべてをChartsReportオブジェクトに残すでしょう。 –

+0

私はChartsReportがチャートビューの作成と設定のすべての面を処理するのは大丈夫だと言いたいと思います。これには、init、autoresizingMask、プロパティ値の割り当てなど、すべてのことが含まれます。ビューの設定に関する詳細を知っていれば、ChartsReportオブジェクトは設定後にビューの使い方を知る必要はありません。 – jonkroll

関連する問題