1

他の質問を検索しましたが、まだ回答がありません...アドバイスが必要です。コードを別のプラットフォームからiOSに移植しています。C ++にMVCバックボーンがあります:モデルのCData。コントローラーのCController。

  • CControllerはCDataのインスタンスを作成します
  • CControllerはCViewのインスタンスを作成します
  • CControllerはCNotifications抽象から継承します
  • CControllerは「this」をCViewのコンストラクターに渡します
  • CViewは、コンストラクターにCNotifications *を想定しています。これにより、CViewは、CController自体を実際に認識しなくても、いくつかの重要なイベントでコントローラーをコールバックできます。

Windowsでは、CViewはGDIにアクセスするだけで、必要なものをすべて描画します。

今、私はこれらすべてをiOSに移植しています。CDataとCControllerは完全にプラットフォームに依存しないため、すべて明確です。iOS上でCViewを再実装するつもりでした。そして、これが問題です。

最初は、iOSのViewController(xibの所有者)がCViewから継承し、すべてのCControllerのニーズを実装することを望んでいました。しかし、Obj-Cには多重継承がなく、ViewControllerはすでにUIViewControllerから継承していることに気付きました。

したがって、ViewController(xibの所有者)へのポインターを持つようにCViewを実装する必要があるようです。

そして問題は、ViewControllerへのポインタをCViewにうまく渡す方法ですか?

ApplicationDelegateは、CDataとCViewを作成するCControllerを作成するように計画しました。CControllerがViewControllerへのポインターを受け取り、このポインターをさらにCViewに渡すことは望ましくありません-CControllerの移植性を維持したい...

いろいろなことが頭に浮かびますが、広く受け入れられるアプローチをここに取り入れたいと思っていました。

前もって感謝します

4

1 に答える 1

0

わかりました。これを解決するには、ViewControllerでコントローラーとビジネスロジックのビューの両方を作成し、ビューをコントローラーに渡します。

于 2012-09-26T13:29:20.603 に答える