2

私はobjective-cに非常に慣れていませんが、私の質問は非常に基本的であるようで、簡潔なものは何もありません(物事を読んで混乱するだけです)。

.xib ファイルを作成するときは、それをコントローラーにリンクします (通常はそう思います)。同時に、コードでビューを定義することにより、.xib で実行できることを実行できます。.xib にドラッグするアイテムのほとんどがビュー オブジェクトであることに気付いたとき、その一部を理解したと思いました。そこから、.xib はどういうわけかビューの実際のコードを表しているだけだと推測しました。それは正確ですか?それとも私は完全に間違っていますか?本当にわからない。

4

3 に答える 3

2

Xib ファイルは、ビューの実際のコードを表すのではなく、ビューのデータの構造のみを表します。各 xib (またはストーリーボード) には、次のすべてを実行するのに十分な情報があります。

  • ビューの要素をインスタンス化する
  • ビューの個々の要素のプロパティを設定します
  • ビューの要素を階層的に接続する
  • Nib 内のオブジェクトの「アウトレット」を、コード内のビューのプロパティまたは変数に接続します。

ただし、そこには「実際のコード」はなく、メタデータのみがあります。Cocoa には、オブジェクトを構築して接続するのに十分な機能がありますが、実際のコードは常に .m ファイルにあります。

于 2013-06-11T04:10:10.183 に答える
2

ビュー コントローラーは、多くのサブビューで構成されるビューを管理します。一方、すべてのビューは、最大で 1 つのスーパービューしか持つことができません。(最上位ビューのスーパービューは nil です)。これはビュー階層と呼ばれます。

階層の最上位ビューは、純粋なコードを使用して定義するか、xib を生成する Interface Builder を使用して定義できます。

また、View Controller 同士の関係を調べるのにも役立ちます。1 つのアプリケーション ウィンドウ内に、それぞれ独自のトップレベル ビューを管理する複数のビュー コントローラーを配置することもできます。これは、View-Controller コンテインメントと呼ばれます。この例は、UINavigationController またはタブバー コントローラーです。. より複雑なアプリでは、コントローラー階層のこの側面を管理する独自のルート コントローラーを設定するのが一般的です。(たとえば、スワイプして、メイン コンテンツ コントローラーの下にあるナビゲーション コントローラーを表示します)。

于 2013-06-11T04:10:23.177 に答える
0

XIB は、準拠する任意のオブジェクトを記述しますNSCodingが、通常はビュー階層をレイアウトするために使用されます。したがって、ほとんどがUIViews で、通常はUIViewController.

ただし、それらは純粋にデータです。コードは生成されません。システムは XIB を読み取り、純粋にデータ読み取り作業としてオブジェクトを作成します。

Objective-C には完全にリフレクティブなランタイムがあります。メソッドが実際に存在するかどうかを事前に知らなくても、文字列として名前でクラスを検索し、同じ方法でそれらのメソッドを呼び出すことができます。Microsoft の Visual C++ など、秘密裏にコードを記述するインターフェイス ビルダーは、データを解析するだけでは記述した内容を確立する方法がないため、そうする傾向があります。

于 2013-06-11T04:11:03.930 に答える