Xcode で iPhone の開発を開始しましたが、View と View Controller の違い、または Table View と Table View Controller の違いがわかりません。誰でも簡単な説明がありますか?
3 に答える
UIView
最初にとUIViewController
クラスに行きましょう
UIViewController
UIView を管理する目的で構築された Cocoa Touch クラスです。ビュー階層があることを期待していますが、「自動的に」ビューを取得することはありません (これは少し不正確です。以下の編集を参照してください)。通常initWithNibName
、View Controller を呼び出してビューを取得します。
Interface Builder には、ファイルの所有者がUIViewController
(またはサブクラス) である場合にビューと呼ばれるプロパティがあることを認識する組み込みの魔法があります。それはそれについてです。
ビュー コントローラーとビューをリンクすると、ビュー コントローラーはかなりの量の作業を行います。ビュー タッチ イベントのレスポンダーとして登録し、デバイスの回転通知を登録します (必要に応じてそれらを自動的に処理します)。アニメーションの詳細の一部を処理し、メモリ不足の状態を半自動的に処理します。
ビュー プロパティを手動で呼び出したり設定したりしないinitWithNibName
場合、view が nil の場合、ビュー プロパティ ゲッターは loadView を呼び出します。loadView のデフォルトの実装は、nibBundle と nibName を設定し、そこからビューをロードしようとしたかどうかを確認します (ほとんどの場合、initWithNibName を呼び出す必要がないのはそのためです)。ただし、これらのプロパティが設定されていない場合、デフォルト値で UIView オブジェクトをインスタンス化します。技術的には、はい、自動的に独自の が付属しますがUIView
、ほとんどの場合、それはほとんど価値がありません。
TableView と UITableViewController クラスに来ます
ATableViewController
はViewController
TableView が組み込まれた です。これには、必要なデリゲート メソッドが既に宣言され、セットアップされています。この VC は既に TableView デリゲートおよびデータソースです。サイズ変更はできません。利点は使いやすさですが、欠点は柔軟性が非常に限られていることです。
ATableView
はまさにその TableView (のサブクラスUIView
) です。ビューコントローラーに追加してサイズを変更したり、別のビューベースのオブジェクトと一緒に使用したりできます。利点は柔軟性です。欠点は、デリゲートとデータソースのメソッドを自分でセットアップする必要があることです (私の意見では、時間をかけて取得する価値があります)柔軟性)。
もう 1 つの注意点は、新しい Static TableView セル (iOS5 の一部) を使用する場合、TableViewController を使用する必要があることです。
また、メソッドの詳細な説明については、次のリンクを確認してください。
UIView と UIViewController の違いは何ですか?
作成できる RootViewController、AppDelegate、および View Controller クラスの違いは何ですか?
ビューとそのコントローラーの違いは、Model-View-Controller パターンのコンテキストで適切に組み立てることができます(この投稿もご覧ください)。
ビューは、そのモデルの (視覚的な) 表現です。通常、モデルの特定の属性を強調表示し、他の属性を抑制します。したがって、プレゼンテーション フィルターとして機能します。
ビューはそのモデル (またはモデル パーツ) に関連付けられ、質問をすることによってモデルからプレゼンテーションに必要なデータを取得します。また、適切なメッセージを送信してモデルを更新することもあります。これらすべての質問とメッセージは、モデルの用語に含まれている必要があります。したがって、ビューは、それが表すモデルの属性のセマンティクスを認識している必要があります。
コントローラーは、ユーザーとシステム間のリンクです。関連するビューが画面上の適切な場所に表示されるように配置することで、ユーザーに入力を提供します。ユーザーにメニューを表示するか、コマンドやデータを与えるその他の手段を提供することにより、ユーザー出力の手段を提供します。コントローラーは、このようなユーザー出力を受け取り、それを適切なメッセージに変換して、これらのメッセージを 1 つ以上のビューに渡します。
ビューは、モデルに含まれるデータの視覚的表現を担当するという考えです。コントローラーは、大まかに言えば、ビューとモデルの間のユーザーの対話と通信を担当します。
これは、 と の間の関係だけでなく、 と などの関係にも適用されますUIView
。また、 /にはモデル クラスの規定がないことに注意してください(これらは非常に広範なクラスであるため、モデルは何でもかまいません)、/テーブル データ ソースとそれの形式でモデルを定義します。UIViewController
UITableView
UITableViewController
UIView
UIViewController
UITableView
UITableViewController
UITableViewDataSource
ビュー コントローラーは、名前が示すとおり、管理する「ビュー」を制御するエンティティです。したがって、View Controller を画面にレンダリングしません。ビューをレンダリングするだけです。ビューを画面にレンダリングできます。タッチ イベント、ジェスチャなどを受け入れることができます。他の多くのサブビューを含めることも、別のビューのサブビューにすることもできます。しかし、この全体像を見てください。これらすべてのビュー (およびサブビュー) をそのメカニズムで管理しているのは何ですか? それがView Controllerです。View Controller は、ビューの構成を含むオブジェクトであり、それらのビューの動作を管理します。