私は自分のゲームビューを実行しているviewControllerを持っています。 viewControllerは、サブビューとしてviewControllerビューに追加されたUIViewからサブクラス化されたDotsのインスタンスを生成します。ドットクラス内では、私はそれらが触れられている(touchesBegan)特定の動作を持っていますが、私はまた、viewControllerのプロパティであるスコアに追加する点に触れたいと思いますが、ばかばかしい回避策。私はここで何が欠けていますか?どのように何かが起こったことをクラスにView Controllerと通信させるには
答えて
NSNotificationCenterとデリゲート+プロトコルの2つのオプション(唯一のものではありません)があります。
NSNotificationCenterは実装して使用するのが簡単ですが、すべてのケースで理想的ではありません。 viewControllerはaddObserverを呼び出して、何らかのメッセージに関心があることを示します。点は興味のあるオブジェクトにメッセージを送るためにpostNotificationNameを呼び出すでしょう。 viewControllerのdeallocでremoveObserverを呼び出すようにしてください。
delegate +プロトコルを使用すると、オブジェクト間のより厳密で、明確な、コンパイラまたは実行時検証可能なインターフェイスを定義できます。詳細は、Objective-Cプログラミング言語のProtocolsを参照してください。
あなたの場合、私はプロトコルの定義がより良い選択肢だと考えています。 viewController自体がドットオブジェクトのデリゲートになります。ドットオブジェクトにはデリゲートプロパティがあり、デリゲートプロパティでプロトコルメソッドを呼び出します。
スコアは、最初はViewControllerのプロパティですか?私はスコアを表示するラベルのプロパティを持つことができますが、スコアそのものは何らかの種類のモデルオブジェクトに属しています。
このアプローチの利点は、Key-Value Observing(KVO)を使用して、ViewControllerをモデルオブジェクトのオブザーバとして追加できることです。実際、これはKVOが設計したものとほとんど同じです。プロパティの変更について任意の数のオブザーバに通知する簡単な方法です。
参考:
Key-Value Coding Protocol Reference
Key-Value Observing Protocol Reference
Model Object Implementation Guide
- 1. Table View Controllerのタイプを通常のView Controllerに変更するにはどうすればよいですか?
- 2. 注釈をクリックすると、どのようにView Controllerにデータを渡すことができますか?
- 3. Presented/Presenting View Controllerと親/子View Controllerの相互作用はどこに文書化されていますか?
- 4. キャンセルされたときにタスクに何が起こるか
- 5. View ControllerクラスをVCとカスタムクラスに分割するルールは何ですか?
- 6. Linuxプログラムは、どのように起動されたかを知ることができます:コマンドラインから?またはcronか他の何かによって?
- 7. プッシュされたコミットを元に戻して、それが起こったことがないようにするにはどうすればよいですか?
- 8. 何LOST Stringに起こることは
- 9. Table View Controllerを自分のView Controllerサブクラスに設定するにはどうすればよいですか?
- 10. View Controllerを別のView Controllerに変更したときに、どのような関数が呼び出されますか?
- 11. グアバ10.0と10.0.1の間に何が起こったでしょうか?
- 12. iphoneアプリケーションを起動したときに何が起こっていますか?
- 13. サービスが複数回起動されたときに何が起こるか
- 14. ここには何が起こっていますか?シェルプログラミング
- 15. View Controllerにビューのクラスを知らせる方法は?
- 16. Dispose()がControllerクラスとRepositoryクラス内でどのように動作するか
- 17. このオブジェクトに何が起こるか
- 18. emacsのJavaには何が起こったのですか?
- 19. Safari View Controllerにカスタムヘッダーを提供することは可能ですか
- 20. アプリが削除されたときにSqliteデータベースに何が起こるか
- 21. 何か問題が起こったとき、自分(開発者)にどのように通知すればよいですか?
- 22. は、次のような場合に起こることになって何を参照
- 23. TextureMgrには何が起こったのですか?
- 24. メフィストには何が起こったのですか?
- 25. Rx for .NET - Scheduler.Dispatcherには何が起こったのですか?
- 26. Mongoid.config.master.connection.hostには何が起こったのですか?
- 27. HornGetには何が起こったのですか?
- 28. DotNetOpenAuth - "View"はこれとどのようにやりとりしますか
- 29. どのようにセットアップ私はここで何を読むによるとメサ
- 30. 'Controller'クラスの 'View'に値を戻す