1

私は現在Cocoaを学んでおり、ボタンとラベルを備えた基本的なフォームを取得するための「一般的な」チュートリアルに従いました。

を使用して.xib、「オブジェクト」(サブクラスのインスタンス)を追加し、ViewControllerに設定してビューに接続するクラスNSObjectも作成しました。次に、メソッドとラベル(myLabel)を追加してファイルをコーディングします。これはすべて正常に機能します(つまり、ボタンが押されるとラベルが更新されます)。ViewControllerCustom ClassViewController.h.mpressedButton

私の質問は、C ++用語(私がよく知っている言語)でこのプロセスを実際に何をしているのかということです。私が理解したように、私の'Object'(クラスViewControllerに設定)は.xibファイルのインスタンスを表し(ここでは間違っている可能性があります)、これをViewControllerクラスに設定すると、ViewControllerでアウトレットとアクションを作成できます.h / .mですが、舞台裏で実際に何が起こっているのかはまだわかりません。

最後に、XCodeテンプレートはAppDelegateクラス「無料」を提供します。クラスを介してコントロールを管理しているViewController場合、このファイル/オブジェクトは何に使用されますか?ビュー自体に関係のないアプリケーション固有のもの、またはフォームのコントロールの管理にも使用されます(いくつかのチュートリアルで見られるように)?

4

1 に答える 1

1

質問の最初の部分がよく理解できたと思います。.xib (nib ファイルの xml バージョン) は、クラスまたはオブジェクトを表していません。むしろ、すべてのサブビュー (それぞれがオブジェクト) を持つビュー オブジェクトを作成し、ビュー コントローラーに適切にリンクするために使用されます。

nib ファイル内の基礎となるビューが self.view に対応することが最も一般的であり、自動的に生成されます (View Controller の観点から)。self.view のサブビュー階層をナビゲートすることで、nib ファイルによって作成された各ビューにアクセスできます。別の方法として、nib/IB (インターフェース ビルダー) 内でタグを定義して、個々のビュー オブジェクトに簡単にアクセスすることもできます。

「あなたの便宜のために」IBOutlets が導入されました。ビュー コントローラーのインターフェイスで IBOutlet を定義し、IB を使用して xib ファイルを使用して作成された専用オブジェクトにリンクできます。ビューオブジェクトに対処する他の方法を考慮すると、実際には必要ないため、「便宜上」と言っています。しかし、これは便利なだけではなく、標準的な方法を強くお勧めします。

IB を使用して作成されたフォーム/ビューに、さらにビューをプログラムで追加することもできます。これらのビューのプロパティは、プログラムで変更できます。

メソッドを使用して、ビュー コントローラが nib ファイルで初期化されるその瞬間に、ビューとサブビューが作成されますinitWithNibName:bundle:。次に、nib ファイル (最近では xib) が開かれ、そのコンテンツが解析および解釈され、すべてのビューが作成され、それぞれのスーパービューに追加され、プロパティとアクション: セレクターなどがそれに応じて設定されます。繰り返しますが、プロセス全体は便宜上設計されています。すべてのビューなどをプログラムで作成することもできます-nibファイルはまったく必要ありません。カスタムView ControllerのloadViewメソッドは、ドンの適切な場所になります。

2 番目の質問: AppDelegate は、アプリケーション全体のアクションなどのために設計されています。View Controller 内ですべてを適切に管理できる場合は、AppDelegate で何も変更する必要はありません。これは、グローバル文字の変数または関数のコンテナーとしてよく使用されます (これらは、アプリ デリゲート オブジェクトのプロパティおよびメンバーです)。application:didFinishLanuncing や applicationDidBecomeActive などの AppDelegates メソッドの一部をオーバーライドする必要がある場合があります。厳密に言えば、UIApplicationDelegate はサブクラス化するクラスではありません。これは、実装するプロトコルです。(Java 内のインターフェースと非常によく似ています。C++ でおなじみの多重継承の欠如を克服するようなものです)。

于 2012-11-19T09:29:33.690 に答える