1

私はobj-c/iOSを初めて使用し、少なくともviewControllersを概念的に理解するのに苦労しています。私は多くのAppleDocを読み、xCodeである程度viewControllersを使用したこともありますが、それが何であるか、またはそれらを使用するための最良の方法はまだわかりません。

私は長年AS3の開発者であるため、MovieClips / Spritesとディスプレイリストのコンテキストで頭を動かして、画面にグラフィックを表示します。

私の理解からそうですね...

  1. viewControllerは、グラフィックを何らかの方法で処理し、グラフィックを使用して何かを実行できるようにする一種のクラスです。それは最も基本的な意味で何ですか?
  2. viewControllersをWindowクラスに追加しているようですが、これは表示オブジェクトを表示リストに追加するのと少し似ていると思いますか?
  3. 最も基本的な意味で、viewControllerはあなたのために何をしますか?
  4. あなたが絶対に彼らと一緒にできない、または彼らと一緒にすべきではない特定のことはありますか?
  5. viewControllersは、機能するためにiOSフレームワークの残りの部分に何らかの方法で接続する必要がありますか(ウィンドウへの追加は別として)。
  6. 彼らはどの程度正確にデータを使用していますか?(MVCについて読んだことがありますが、概念的にはこれは少し異なる質問であることを理解しています)データをviewControllerにハードコーディングしないことを理解しているので、viewControllerはどのように静的データにアクセスしますか?
  7. 画面に画像を表示したいとしましょう。そのプロセスでviewControllerは正確にどのような役割を果たしますか?それは、そのプロセスの1つの小さな側面だけを処理するものですか、それともショー全体を処理し、すべてを処理するものですか?
  8. 1つのviewControllerが複数の画像を処理しますか?画面に表示されるすべての画像の「コントローラー」という用語のようですか、それとも一度に1つの画像を処理しますか?
  9. 処理する画像へのviewControllers接続とは何ですか?それらへの参照が含まれていますか?

私は助けになっているSparrowフレームワークを使用していますが、それでもviewControllerが何であるかを頭に入れたいので、それらを適切に使用する方法を知っています。

ハ、私は上記をお詫びします。私は完全に混乱しているように見えるに違いないことを知っています:)アドバイスをありがとう。

4

3 に答える 3

3

これがお役に立てば幸いです。

  1. viewControllerは、グラフィックを何らかの方法で処理し、グラフィックを使用して何かを実行できるようにする一種のクラスです。

    これは、ビュー(Xibファイル)とデータ(CoreDataまたはバックエンドで使用しているものであれば何でもかまいません)の間の接着剤です。ビューで使用しているすべてのUI要素は、それらにアクセスするためにコントローラーのプロパティとして通常定義します。

  2. それは最も基本的な意味で何ですか?viewControllersをWindowクラスに追加しているようですが、これは表示オブジェクトを表示リストに追加するのと少し似ていると思いますか?

    AS3をよく知らないので、ディスプレイリストとViewControllerを比較できません。ただし、基本的にViewControllerは、ビュー間のさまざまなタイプの遷移を処理し、ビューに表示されるデータにアクセス(設定/読み取り)するためにあります。

  3. 最も基本的な意味で、viewControllerはあなたのために何をしますか?

    私が上で書いたように。最も基本的な意味では、ユーザーがビューで何をするかを解釈し、ユーザーのアクションに応じてモデルを変更します。

  4. あなたが絶対に彼らと一緒にできない、または彼らと一緒にすべきではない特定のことはありますか?

    モデルとコントローラーの境界を保つことは常に困難です。それらは互いにかなり近いです。したがって、私が通常試みるのは、すべてのロジック(計算、データベースアクセスなど)を移動することです。これは、モデル部分に属します。しかし、当然のことながら、コントローラーでこれらの外部クラスを使用しています。

  5. viewControllersは、機能するためにiOSフレームワークの残りの部分に何らかの方法で接続する必要がありますか(ウィンドウへの追加は別として)。

    すでに書いたように、ViewControllerをビューに接続する必要があります。そうでなければ、それはあまり意味がありません。UINavigationControllerなどのUIViewControllerにはさまざまなサブタイプがあり、これらの特別なサブタイプに必要な機能全体を提供するには、他のメソッドを上書きする必要があります。

  6. 彼らはどの程度正確にデータを使用していますか?(MVCについて読んだことがありますが、概念的にはこれは少し異なる質問であることを理解しています)データをviewControllerにハードコーディングしないことを理解しているので、viewControllerはどのように静的データにアクセスしますか?

    データを保存するためのさまざまなアプローチが考えられます。最も簡単な方法は、UIViewControllerにデータを直接保存することです。これは、データのコンテナであるカスタムクラスである可能性があります。すべての変更はこのクラスに直接書き込まれ、UIViewControllerによって表示されます。ただし、ほとんどの場合、CoreData(sqliteデータベースへのデータの読み取り/書き込みを担当する)を使用するのが理にかなっています。CoreDataをモデルとして見ることができ、UIViewControllerはそこからデータを取得し、UIViewControllerがビューから受け取ったデータをモデルに返します。

  7. 画面に画像を表示したいとしましょう。そのプロセスでviewControllerは正確にどのような役割を果たしますか?それは、そのプロセスの1つの小さな側面だけを処理するものですか、それともショー全体を処理し、すべてを処理するものですか?

    UIViewControllerは、Xibファイルで作成したUIImageViewに接続されたInterface Builderにある内部プロパティ(UIImageView *)を格納します。したがって、これらのプロパティを介して、コントローラを介して画像を変更できます。

  8. 1つのviewControllerが複数の画像を処理しますか?画面に表示されるすべての画像の「コントローラー」という用語のようですか、それとも一度に1つの画像を処理しますか?

    はい、これは大きな問題ではありません。あなたはあなたが望むだけ多くの画像を持つことができます。UIViewControllerで定義され、ビューにリンクされているプロパティが必要です。

  9. 処理する画像へのviewControllers接続とは何ですか?それらへの参照が含まれていますか?

    ええ、それはUIElementへの参照のようなものです。次に、UIViewControllerから直接UIImageViewのプロパティを変更できます。

いくつかの便利なリンク:

于 2012-10-19T12:02:12.337 に答える
1

チェックすることをお勧めします: https ://stackoverflow.com/questions/1939/how-to-articles-for-iphone-development-and-objective-c

これがあなたの質問に対する答えです:

  1. いいえ、グラフィックは処理しません。これは、 MVCデザインパターンのコントローラーです。コンテンツ(ビューなど)とにリンクされたデータのライフサイクルを処理します。
  2. AUIViewControllerはのルートとして設定されUIWindowます。たとえば、aは、ナビゲーションを処理するためのスタックUINavigationControllerのサブクラスです。UIViewControllerUIViewController
  3. (1)の回答
  4. この質問をより具体的にしてください。
  5. UINavigationControllerすでにコメントしたように、またはのようなすでに組み込まれているコンポーネントを使用すると便利ですUITabBarController
  6. たとえば、データをインスタンス変数に入れて、含まれているに表示することができますUIView
  7. UIView添付されてUIViewControllerいるにはが含まれますUIImageViewUIViewControllerたとえば、ユーザーがボタンを押したときに画像を変更するなど、必要な変更を行うために、あなたはそれと関係があります。
  8. UIViews複数、したがって複数を含めることができますUIImageViews(のサブクラスですUIView
  9. コメントされているように、それらはに含まれ、UIImageViewプログラムまたはでリンクされますIBOutlet
于 2012-10-19T11:56:56.130 に答える
1

一言で言えば、ビューコントローラーはMVCパターンのコントローラーです。このパターンを最新の状態に保つために、さらに読む前にこのリンクを確認してください。

http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

OK、基本的にコントローラーはビューのコレクションを管理します。また、モデルからデータをフェッチし、ビューの状態を設定します。ビューはモデル(データ)について何も知らず、モデルはビューについて何も知らないことに注意することが重要です。コントローラはまた、ビューからイベントを受け取り、それに応じてモデルを変更する方法を決定します。基本的に、ビューとモデル間の同期を管理しています。

KVOやKeyValueバインディングなど、これを自動化するのに役立つテクノロジーがあります。グーグル検索はそこであなたを助けます。

もう一つ。コントローラを除いて、アプリケーションの他の部分がビューにアクセスすることはできません。したがって、一般に、アプリケーションでは、コントローラーは、たとえば、ナビゲーションコントローラーの下のコントローラー間の遷移またはデリゲートパターンを介して、相互に通信する傾向があります。そのため、アプリケーションのバックボーンは、相互に通信するコントローラーになる傾向があります。

于 2012-10-19T14:46:52.913 に答える