0

特定のコントローラー クラスについて、グリッドを描画する必要があります (グリッドとは、毎日、場合によっては 1 時間ごとに変更される毎日のスケジュールを指します)。しばらくして、ユーザーのアクションに応じて、元のグリッドを作成していたときにはなかった更新されたスケジュール データをそのグリッドに入力する必要があります。

私の質問は、viewDidLoad の時点で選択された日がわからないため、新しい毎日のスケジュール データと共にグリッド全体を再描画する必要があるということですか? (drawRect にすべてを描画するには、これしか考えられません) または、drawRect のでメソッドを呼び出して、毎日のスケジュールを描画することはできますか? または、これを行う別のより良い方法はありますか?

4

2 に答える 2

2

これがiOSであるかMacであるかを指定しないでください。これは、これについて行うことができる仮定にごくわずかな影響を与える可能性があります。ただし、一般に、ビューのdrawRectメソッドは、少なくとも指定された長方形内のすべてを再描画する必要があります(手がかりはメソッド名にあります)。そして、大まかに言えば、それはそのような描画を管理する場所ですが、もちろん、明確さと整理のためにコードを他の方法に分割することができます。

グリッドが非常に密集していない限り、この再描画がパフォーマンスに顕著な影響を与える可能性はほとんどありません。実際にダーティな領域で必要なコンテンツを再描画できないと、状況はさらに悪化します。

于 2012-06-26T22:02:51.327 に答える
0

グリッドの図面コードをスケジュールデータの図面コードから分離したいと思うように思えます。

これを行う最も簡単な方法は、スケジュールデータ用にNSViewのサブクラスを作成することです。次に、データごとにそのオブジェクトのインスタンスを作成できます。グリッドビューは、フレームを設定することでこれらのスケジュールデータオブジェクトを配置でき、スケジュールデータオブジェクトは独自のdrawRect:メソッドで自分自身を描画できます。

于 2012-06-26T22:02:24.760 に答える